#javascript #html #radio-button
#javascript #HTML #переключатель
Вопрос:
при нажатии одной переключающей кнопки я должен проверить одно условие, если true, я должен проверить его или восстановить тот же старый статус,
HTML
<input type="radio" name="test" id="radio0" onclick="myFunction()" checked />
<input type="radio" name="test" id="radio1" onclick="myFunction()" />
<input type="radio" name="test" id="radio2" onclick="myFunction()" />
JS
globalCondition = false;
function myFunction()
{
if(globalCondition)
{
//some codes and it will check clicked radio button anyway
}
else
{
return false; // i tried this but its not working
/*here i don't want to check clicked radio button, and previously
checked button should be checked*/
}
}
Комментарии:
1. jsfiddle.net/vL4FF Просто используйте
onclick="return myFunction()"
или jsfiddle.net/2LAaD передайте объект события в вашу функцию, а затем используйтеevent.preventDefault();
2. Return ничего не сделает, поскольку ваш атрибут onclick не «возвращает» значение функции. Вместо этого используйте preventDefault() (или фактически возвращайте значение)!
3. @TrueBlueAussie, полностью согласен, именно поэтому я использовал или .
Ответ №1:
Как я уже сказал в комментарии return
в функции, это ничего не даст, поскольку вы не возвращаете значение функции во встроенном коде.
Хотя другие предлагаемые решения верны, чтобы ваш код оставался ненавязчивым, у вас вообще не должно быть встроенного JS (удалите onclick=
‘s).
Я понимаю, что вопрос не был помечен jQuery
, но, возможно, так и должно было быть: вместо onclick
этого вы должны использовать обработчик событий jQuery, выбирая только набор переключателей.
JSFiddle: http://jsfiddle.net/TrueBlueAussie/KVwL3/1 /
globalCondition = false;
$(function(){
$("[name=test]").click(function(e){
if(globalCondition)
{
//some codes and it will check clicked radio button anyway
}
else
{
return false;
// or
e.preventDefault();
/*here i don't want to check clicked radio button, and previously
checked button should be checked*/
}
});
});
Примечания:
Событие готовности DOM:
$(function(){ YOUR CODE HERE });
является ярлыком для $(document).ready(function(){ YOUR CODE HERE});
Селекторы
Если []
значение селектора атрибута =
содержит специальные символы, его необходимо заключить в кавычки:
например
$('[name="IstDynamicModel[SD_WO_CREATE]"]')
Существует любое количество селекторов, которые будут выбирать только три переключателя. Поскольку это простое одноразовое соединение, при запуске реальной разницы в скорости между любыми параметрами нет, но обычно вы пытаетесь настроить селектор таким образом, чтобы использовать различные таблицы поиска, доступные браузеру:
например
$('input[type=radio][name="IstDynamicModel[SD_WO_CREATE]"]')
Это будет немного быстрее, так как уменьшит самую медленную проверку (the name=
) только radio
input
до s .
Комментарии:
1. в моем имени списка переключателей
IstDynamicModel[SD_WO_CREATE]
отображаетсяunrecogonized expression
ошибка, когда я указываю что-то вроде ‘ $(«[name=IstDynamicModel[SD_WO_CREATE]]»).change(function (e){` могу ли я использовать идентификатор вместо имени???2. jQuery пытается интерпретировать скобки [], поэтому просто заключите в кавычки =’isDynamicModel[SD_WO_CREATE]’ или используйте идентификатор «начинается с» соответствия. Например $(«[id ^=radio]»). Есть много способов сопоставить эти 3 переключателя.
Ответ №2:
попробуйте это:
globalCondition = false;
function myFunction(e)
{
if(globalCondition)
{
//some codes and it will check clicked radio button anyway
}
else
{
e.preventDefault();
return false; // i tried this but its not working
/*here i don't want to check clicked radio button, and previously
checked button should be checked*/
}
}
Комментарии:
1. что
e
здесь такогоthis
в этом элементе??2. если вы назначите myFunction событию щелчка по радио, ‘e’ будет событием, которое запускает код или, проще говоря, положение мыши и действия, которые делает мышь (в вашем случае щелчок и настройка радио для проверки).
3. @Satpal благодарит за предоставление скрипки.
Ответ №3:
Используйте так
<input type="radio" name="test" id="radio1" onclick="return myFunction()" />
javascript
globalCondition = false;
function myFunction(e)
{
if(globalCondition)
{
//some codes and it will check clicked radio button anyway
return true;
}
else
{
return false; // i tried this but its not working
/*here i don't want to check clicked radio button, and previously
checked button should be checked*/
}
}