如何检查jQuery中是否检查了每个组中的单选按钮?

时间:2010-08-24 02:36:42

标签: jquery jquery-selectors radio-button

多个组或单选按钮

<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中是否检查了每个组中的单选按钮?

谢谢。

4 个答案:

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

You can give it a try here


你也可以稍微扩展一下,例如突出显示错过的问题:

if(noAns.css({ color: "red" }).length > 0) { 

并使用$("h1").css({ color: "" })在下一轮you can give it a try here清除它。

答案 2 :(得分:1)

使用formdiv

包裹每个广播组
<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) {
  ...
}