Використовуйте 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() == ""і видалити, !і ви все будете готові .
Дуг Нейнер

@Doug - чи не все-таки згадана проблема Скотта? Що .val()повернеться, якби була перевірена радіо-кнопка value=""? (Хоча я гадаю, ви можете стверджувати, що це досить малоймовірний випадок).
Домінік Роджер

1
Вибачте, мій коментар був заплутаним: я мав на увазі, щоб весь тест виглядав так: if ($("input[name='html_elements']:checked").val() == "")Що б сповістило "Нічого не перевірено"
Дуг Нейнер

144

Я використовую

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

І поверне FALSE, якщо всі елементи в радіогрупі будуть відмічені, і ПРАВИЛЬНЕ, якщо елемент позначено.


3
Ця відповідь надійно працювала для мене, щоб перевірити, чи має вибрана величина групи перемикачів. Найкраща відповідь у темі.
Енді Кук

1
І відповідь Домініка Роджера та Якобо Ернандеса добре працює. Я особисто намагаюся ніколи не використовувати провідний NOT (!) На початку рядка. Через роки стає важко налагоджувати, коли ви не помічаєте це і маєте логіку назад ... це (": перевірено") дуже зрозуміло, що ви робите - найкраща відповідь.
Скотт

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!');
}



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");
        }

}

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.