Как проверить, включен ли переключатель в каждой группе в jQuery?
Несколько групп или радиокнопки
<h1>Question 1</h1>
<input type="radio" name="radio1" value="false" />
<input type="radio" name="radio1" value="true" />
<h1>Question 2</h1>
<input type="radio" name="radio2" value="false" />
<input type="radio" name="radio2" value="true" />
Как я могу проверить в jQuery, что переключатель в каждой группе отмечен?
Спасибо.
Ответы
Ответ 1
Вот как я это сделаю:
var all_answered = true;
$("input:radio").each(function(){
var name = $(this).attr("name");
if($("input:radio[name="+name+"]:checked").length == 0)
{
all_answered = false;
}
});
alert(all_answered);
Таким образом, вам не нужно полагаться на родственные или родственные теги. Если ваши переключатели смешиваются с любым тегом, он все равно будет работать. Вы можете поиграть с ним.
Ответ 2
Вы можете просмотреть каждый вопрос (<h1>
) и просмотреть его с помощью .nextUntil()
с .filter()
, чтобы увидеть, есть ли :checked
, например:
var noAns = $("h1").filter(function() {
return $(this).nextUntil("h1").filter(":checked").length == 0;
});
Это вернет все вопросы без радио, выбранных для них, вы можете проверить .length
, если хотите посмотреть если у кого нет ответов, например:
if(noAns.length > 0) {
alert(noAns.length + " question(s) don't have answers!");
}
Вы можете попробовать здесь.
Вы также можете расширить это, например, выделив те вопросы, которые были пропущены:
if(noAns.css({ color: "red" }).length > 0) {
и используйте $("h1").css({ color: "" })
, чтобы очистить его в следующем раунде, вы можете попробовать здесь.
Ответ 3
Оберните каждую группу радиостанций с помощью form
или div
:
<div id="question1">
<h1>Question 1</h1>
<input type="radio" name="radio1" value="false" />
<input type="radio" name="radio1" value="true" />
</div>
<div id="question2">
<h1>Question 2</h1>
<input type="radio" name="radio2" value="false" />
<input type="radio" name="radio2" value="true" />
</div>
Затем в jQuery:
if ($('#question1 input[type=radio]:checked')[0] != undefined && $('#question2 input[type=radio]:checked')[0] != undefined) {
...
}
Ответ 4
Я поддержал ответ "GG". Однако вам не нужно менять
HTML.
Просто выберите [name] (который должен быть уникальным):
if ($("input[name='radio1']:checked")[0] != undefined &&
$("input[name='radio2']:checked")[0] != undefined) {
...
}