验证8个真/假复选框或复选框中的2个

时间:2015-04-09 06:55:27

标签: javascript jquery html

我的表单有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

    5. 逻辑:

      • 必须只有1个真实且只有1个错误答案(总共2个答案)。
      • 不能超过1个假和1个真实答案。
      • 对于同样的问题,不能有1个真实答案和1个错误答案。
      • 在满足所有这些规则时返回true。
      • 在最后一个示例中:

        1. □ true - ☒ false

        2. □ true - □ false

        3. □ true - □ false

        4. ☒ 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>
      

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

1 个答案:

答案 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