условие onclick переключателя, если false не проверяет

#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*/ 
   }
}