Выясните, установлен ли переключатель с помощью JQuery?

470

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

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

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

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

Теги:
checked

15 ответов

896
Лучший ответ
$('#element').click(function() {
   if($('#radio_button').is(':checked')) { alert("it checked"); }
});
  • 0
    Бинго! спасибо Дэвид Должен ли я вызвать действие (нажать и т. Д.), Чтобы показать предупреждение? Есть ли способ сделать это без нажатия?
  • 0
    ну, вы можете запустить is(':checked') всякий раз, когда. так что если вы хотите что-то показать при загрузке страницы, например, в зависимости от того, установлен ли флажок, вы можете просто вставить тот же оператор if в загрузку страницы.
Показать ещё 7 комментариев
110

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

$(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

  • 0
    Это не сработало для меня. Если я предупреждаю ($ ("input [@ name = 'shipping_method']: флажок"). Val ()); он по-прежнему дает мне значение, даже если переключатель не выбран.
  • 14
    Хорошо, все заработало .. убрал знак @.
Показать ещё 2 комментария
33

В качестве решения Parag я сделал ошибку для меня, здесь мое решение (сочетающее Дэвида Хедлунда и Парага):

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

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

28

Вам нужно будет связать событие клика с этим флажком, так как событие изменения не работает в 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();
  • 4
    +1 за предупреждение IE
15

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

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         
}
  • 1
    А как насчет id? Это просто радио [id = 'id'] ... и т.д ...
7

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

$("input[type=radio]").click(function () {
    if($(this).prop("checked")) { alert("checked!"); }
});
  • 0
    На самом деле .prop() намного быстрее и проще набирать.
6

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

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

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

4

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

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

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

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

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

2

Работа со всеми типами кнопок и браузеров радиосвязи

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

Рабочий Jsfiddle здесь

2

динамическая сгенерированная радиокамера Проверить значение радиоприемника

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

При изменении динамической радио кнопки

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

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

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

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

    if(typeof $('.radio-button-class-name:checked').val() !== 'undefined'){
     // radio button is checked
    }
  • 0
    Поскольку вы использовали его с классом вместо идентификатора, он бы возвратил список узлов вместо элемента. $('.radio-button-class-name').first().is(':checked') должен был работать.
1

Попробуйте следующее:

alert($('#radiobutton')[0].checked)
-2
$("#radio_1").prop("checked", true);

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

$("#radio_1").attr('checked', 'checked');
  • 2
    Это устанавливает значение свойства checked , а не запрашивает его.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню