验证8个正确/错误复选框或复选框中的2个

我的表单有4个是非题,需要1个真选择和1个假(总共2个选择)才有效。可接受的方案如下:

  1. □ true - □ false

  2. ☒ true - □ false

  3. □ true - □ false

  4. □ true - ☒ false

或者

  1. □ true - ☒ false

  2. □ true - □ false

  3. □ true - □ false

  4. ☒ true - □ false

逻辑:

  • 必须只有1个正确答案和1个错误答案(总共2个答案)。
  • 最多只能有1个错误答案和1个正确答案。
  • 相同的问题不能有1个正确答案和1个错误答案。
  • 当满足所有这些规则时,返回true。
  • 在上一个示例的形式中:

    1. □ true - ☒ false

    2. □ true - □ false

    3. □ true - □ false

    4. ☒ true - □ false

如果在第一个问题上单击“ true”,将发生以下情况:

  • ☒ 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>

表单需要在每次单击事件时进行验证(即自动更新)。

米林德·安纳特瓦尔

您可以使用:

$('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;
}});

工作演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章