多个组或单选按钮
<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中是否检查了每个组中的单选按钮?
谢谢。
答案 0 :(得分:22)
我将如何做到这一点:
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);
这样您就不需要依赖兄弟或父标签了。如果您的单选按钮与任何标签混合在一起,它仍然可以正常工作。你可以play around with it。
答案 1 :(得分: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: "" })
在下一轮you can give it a try here清除它。
答案 2 :(得分:1)
使用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) {
...
}
答案 3 :(得分:0)
我通过&#34; GG赞成了答案。&#34;但是,您不需要更改 HTML。
只需按[名称]选择(应该是唯一的):
if ($("input[name='radio1']:checked")[0] != undefined &&
$("input[name='radio2']:checked")[0] != undefined) {
...
}