我的表单有4个真/假问题,它需要1个真正的选择和1个错误,总共2个选择才有效。接受的方案如下:
□ true - □ false
☒ true - □ false
□ true - □ false
□ true - ☒ false
或
□ true - ☒ false
□ true - □ false
□ true - □ false
☒ true - □ false
逻辑:
在最后一个示例中:
□ true - ☒ false
□ true - □ false
□ true - □ false
☒ true - □ false
如果点击“真实”'在问题1上,以下情景将会出现 发生:
☒ true - □ false
□ true - □ false
□ true - □ false
□ true - □ false
取消选中同一行的另一个值(false),并取消选中相同值(true)的另一个选项,以便在每个事件中始终满足初始条件(参见上面的逻辑)。
HTML:
<form>
<p>1)
<input name="q1" type="checkbox" value="true">
<input name="q1" type="checkbox" value="false">
</p>
<p>2)
<input name="q2" type="checkbox" value="true">
<input name="q2" type="checkbox" value="false">
</p>
<p>3)
<input name="q3" type="checkbox" value="true">
<input name="q3" type="checkbox" value="false">
</p>
<p>4)
<input name="q4" type="checkbox" value="true">
<input name="q4" type="checkbox" value="false">
</p>
</form>
表单需要在每次点击事件中验证(即自动更新)。
答案 0 :(得分:1)
您可以使用:
$('input:checkbox').change(function(){
if($('input:first-child:checked').length==1){
var firstcheckedelementindex=$('input:first-child').index($('input:first-child:checked'));
var secondcheckedelementindex=$('input:nth-child(2)').filter(function(){
return this.checked;
}).length;
return( secondcheckedelementindex==1 && $('input:nth-child(2)').not(':eq('+firstcheckedelementindex+')').is(':checked'))
}else{
return false;
}});
<强> Working Demo 强>