Узнайте, проверяется ли переключатель с помощью JQuery?

Я могу установить переключатель на checked fine, но то, что я хочу сделать, это настроить своего рода "прослушиватель", который активируется, когда установлен определенный переключатель.

возьмите, например, следующий код:

$("#element").click(function()
{ 
    $('#radio_button').attr("checked", "checked");
});

Он добавляет проверенный атрибут, и все хорошо, но как бы я пошел добавление предупреждения. Например, это появляется, когда переключатель установлен без помощи функции click?

15 ответов


$('#element').click(function() {
   if($('#radio_button').is(':checked')) { alert("it's checked"); }
});

Если у вас есть группа переключателей с одинаковым атрибутом имени и при отправке или каком-либо событии вы хотите проверить, был ли установлен один из этих переключателей, вы можете сделать это просто следующим кодом :

$(document).ready(function(){
  $('#submit_button').click(function() {
    if (!$("input[name='name']:checked").val()) {
       alert('Nothing is checked!');
        return false;
    }
    else {
      alert('One of the radio buttons is checked!');
    }
  });
});

источник

jQuery API Ref


как решение Parag бросило ошибку для меня, вот мое решение (объединение Дэвида Хедлунда и Parag):

if (!$("input[name='name']").is(':checked')) {
   alert('Nothing is checked!');
}
else {
   alert('One of the radio buttons is checked!');
}

это сработало отлично для меня!


вам нужно будет связать событие click флажка, так как событие change не работает в IE.

$('#radio_button').click(function(){
    // if ($(this).is(':checked')) alert('is checked'); 
    alert('check-checky-check was changed');
});

теперь, когда вы программно изменяете состояние, вы также должны вызвать это событие:

$('#radio_button').attr("checked", "checked");
$('#radio_button').click();

/ / Проверьте класс

if($("input:radio[class='className']").is(":checked")) {
     //write your code         
}

//регистрация через имя

if($("input:radio[name='Name']").is(":checked")) {
         //write your code         
}

/ / проверьте данные

if($("input:radio[data-name='value']").is(":checked")) {
         //write your code         
}

другой способ-использовать prop (jQuery >= 1.6):

$("input[type=radio]").click(function () {
    if($(this).prop("checked")) { alert("checked!"); }
});

Если вы не хотите функцию щелчка используйте функцию изменения Jquery

$('#radio_button :checked').live('change',function(){
alert('Something is checked.');
});

Это должен быть ответ, который вы ищете. если вы используете jQuery версии выше 1.9.1 попытка использовать on как функцию live была устаревшей.


решение будет простым, так как вам просто нужны "слушатели", когда установлен определенный переключатель. Сделай это: -

if($('#yourRadioButtonId').is(':checked')){ 
// Do your listener's stuff here. 
}

... Спасибо, ребята... все, что мне было нужно, это "значение" проверенного переключателя, где каждый переключатель в наборе имел другой идентификатор...

 var user_cat = $("input[name='user_cat']:checked").val();

работает для меня...


работа со всеми типами переключателей и браузеров

if($('#radio_button_id')[0].checked) {
   alert("radiobutton checked")
}
else{
   alert("not checked");
}

Работает Jsfiddle Здесь


динамический сгенерированный переключатель проверить радио получить значение

$("input:radio[name=radiobuttonname:checked").val();

при изменении динамического переключателя

$('input[name^="radioname"]').change(function () {if (this.value == 2) { }else{}});

попробуй такое

    if($('input[name="radiobutton"]:checked').length == 0) {
        alert("Radio buttons are not checked");
    }

попробуйте это:

alert($('#radiobutton')[0].checked)

$('.radio-button-class-name').is ('checked') не работал для меня, но следующий код работал хорошо:

    if(typeof $('.radio-button-class-name:checked').val() !== 'undefined'){
     // radio button is checked
    }

$("#radio_1").prop("checked", true);

для версий jQuery до 1.6 используйте:

$("#radio_1").attr('checked', 'checked');