Использование JQuery для проверки, не отмечен ли ни один переключатель в группе

107

Я сижу с проблемой, мне нужно проверить с помощью JQuery, не отмечен ли переключатель в группе переключателей, чтобы я мог выдать пользователям ошибку javascript, если они забыли проверить параметр.

Я использую следующий код для получения значений

var radio_button_val = $("input[name='html_elements']:checked").val();
Элитмиар
источник

Ответы:

146
if (!$("input[name='html_elements']:checked").val()) {
   alert('Nothing is checked!');
}
else {
  alert('One of the radio buttons is checked!');
}
Доминик Роджер
источник
17
Это не сработает, если установленный переключатель имеет значение = ""
ScottE
1
@ScottE - отличный момент - я удалю этот ответ, если Роланд его не примет.
Доминик Роджер
Я думаю, вы можете просто изменить его на .val() == ""и удалить, !и все будет готово.
Дуг Найнер
@ Дуг - разве это не проблема, о которой говорил Скотт? Что .val()вернулось бы, если бы отмеченный переключатель был value=""? (Хотя, полагаю, вы можете возразить, что это маловероятный случай).
Доминик Роджер
1
Извините, мой комментарий сбивает с толку: я имел в виду, чтобы весь тест выглядел следующим образом: if ($("input[name='html_elements']:checked").val() == "")что будет предупреждать «Ничего не проверено»
Дуг Нейнер,
144

я использую

$("input:radio[name='html_radio']").is(":checked")

И вернет FALSE, если все элементы в радиогруппе не отмечены, и TRUE, если элемент отмечен.

Хакобо Эрнандес
источник
3
Этот ответ сработал для меня, чтобы проверить, имеет ли группа переключателей выбранное значение. Лучший ответ в ветке.
Энди Кук
1
Оба ответа Доминика Роджера и Хакобо Эрнандеса работают хорошо. Я лично стараюсь никогда не использовать НЕ (!) В начале строки. Спустя годы становится трудно отлаживать, когда вы упускаете это из виду и имеете обратную логику ... is (": checked") очень ясно, что вы делаете - лучший ответ.
Скотт
32

Вы можете сделать что-то вроде этого:

var radio_buttons = $("input[name='html_elements']");
if( radio_buttons.filter(':checked').length == 0){
  // None checked
} else {
  // If you need to use the result you can do so without
  // another (costly) jQuery selector call:
  var val = radio_buttons.val();
}
Дуг Найнер
источник
2
Не могли бы вы сузить первые две строчки до всего if ($("input[name='html_elements']:checked").length == 0){?
Powerlord
7
Вы могли бы, но тогда вам понадобится еще один полный выбор jQuery, чтобы получить значение, если вы показали, что значение существует.
Дуг Найнер
5
if ($("input[name='html_elements']:checked").size()==0) {
   alert('Nothing is checked!');
}
else {
  alert('One of the radio buttons is checked!');
}
Fanjabi
источник
2
var len = $('#your_form_id input:radio:checked').length;
      if (!len) {
        alert("None checked");
      };
      alert("checked: "+ len);
Дэвид Окви
источник
2

Думаю, это простой пример, как проверить, проверялось ли радио в группе радио.

if($('input[name=html_elements]:checked').length){
    //a radio button was checked
}else{
    //there was no radio button checked
} 
Виталий Д.
источник
0

Я использую это очень просто

HTML

<label class="radio"><input id="job1" type="radio" name="job" value="1" checked>New Job</label>
<label class="radio"><input id="job2" type="radio" name="job" value="2">Updating Job</label>


<button type="button" class="btn btn-primary" onclick="save();">Save</button>

СЦЕНАРИЙ

 $('#save').on('click', function(e) {
    if (job1.checked)
        {
              alert("New Job"); 
        }
if (job2.checked)
        {
            alert("Updating Job");
        }

}

Мэтью Маганте
источник