Несколько групп или переключателей
<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, что переключатели в каждой группе проверен?
Спасибо.
Я бы сделал это следующим образом:
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);
Таким образом, вам не нужно полагаться на родственные или родительские теги. Если ваши переключатели перепутаны с каким-либо тегом, он все равно будет работать. Вы можете поэкспериментировать с ним .
Вы можете просмотреть каждый вопрос () и ответы на него, используя
.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: "" })
, чтобы очистить его в следующем раунде, вы можете попробовать это здесь.