2010-11-09 4 views
5

Как определить, выбраны ли мои переключатели?JQuery: Как определить, была ли выбрана радиокнопка?

Например:

if (radio_button_selected) { 

// do something 

} else { 

// do something else 

} 
+0

Этот вопрос был задан до много раз. Пожалуйста, найдите ответ, прежде чем задавать вопрос. http://stackoverflow.com/questions/4138300/validating-a-form-with-a-radio-button/4138350#4138350 – zzzzBov

ответ

7

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

jQuery("input[name='my_button_group']:checked") 

Так, например:

if (jQuery("input[name='my_button_group']:checked")) { 
    ... 
} 
else { 
    ... 
} 
+0

Почему мне нужна **. длина> 0 **? – StaceyH

+0

@StaceyH - вы не в JavaScript, но это гораздо более быстрый селектор, чем другой ответ (из-за 'input'). –

+0

@Nick Craver ... не был уверен, что вы можете увидеть мои комментарии из моего сообщения .. но посмотрите –

1
if ($("input[name='yourRadioName']:radio:checked").length) { 
} else { 
} 
+0

@Nick Craver ... Есть разница в методе Джастина против моего. ': radio' гарантирует, что выбран переключатель, а не только какой-либо зарегистрированный вход с именем« yourRadioName ». Однако вы правы, используя ввод, который будет выполняться быстрее. –

1

Если у вас есть ваш переключатель rb уже выбирается с помощью других средств, вы можете сделать:

var rb = $('whatever selector'); 

// other code 

if (rb.is(':checked')) 
{ 
    // code 
} 
+0

+1 за возможность повторного использования rb для чего-то еще в коде (например, получение val()) – Ben

+0

@jelbourn 'rb.checked' - лучший выбор - он быстрее и читабельнее. –

+0

@ Šime Vidas: 'checked' не является свойством объекта списка jquery. Фактический объект DOM имеет свойство 'checked'. – jelbourn

1

Если у вас есть ссылка на элемент уже, вы можете использовать его checked свойство:

$('input[type=radio]').focus(function(){ 
    // "this" is the element that was clicked 

    if (this.checked) { 
     // do something 
    } else { 
     // do something else 
    } 
}); 
+1

Разве это не бессмысленно, так как если пользователь «нажал» радиокнопку, он всегда будет «проверен», поэтому вы НИКОГДА не дойдете до состояния ELSE вашего кода выше – StaceyH

+0

@StaceyH Очень хорошо точка. Изменено, чтобы «сфокусировать», чтобы проиллюстрировать мою точку зрения. – lonesomeday

Смежные вопросы