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

Javascript 验证8个正确/错误复选框或复选框中的2个,javascript,jquery,html,Javascript,Jquery,Html,我的表格有4个正确/错误的问题,需要1个正确选择和1个错误选择,总共2个选择才有效。可接受的方案如下: □ 对-□ 错误 ☒ 对-□ 错误 □ 真的-□ 错误 □ 对-☒ 错误 或 □ 对-☒ 错误 □ 对-□ 错误 □ 对-□ 错误 ☒ 对-□ 错误 逻辑: 必须只有1个正确答案和1个错误答案(总共2个答案) 不可能有超过1个假答案和1个真答案 对于相同的问题,不可能有1个正确答案和1个错误答案 当满足所有这些规则时,返回true 在最后一个示例的形式中: □ 对-☒ 错误 □ 对-□ 错误

我的表格有4个正确/错误的问题,需要1个正确选择和1个错误选择,总共2个选择才有效。可接受的方案如下:

  • □ 对-□ 错误

  • ☒ 对-□ 错误

  • □ 真的-□ 错误

  • □ 对-☒ 错误

  • □ 对-☒ 错误

  • □ 对-□ 错误

  • □ 对-□ 错误

  • ☒ 对-□ 错误

  • 逻辑:

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

    • □ 对-☒ 错误

    • □ 对-□ 错误

    • □ 对-□ 错误

    • ☒ 对-□ 错误


    如果在问题1上单击“true”,则会出现以下情况 发生:

    • ☒ 对-□ 错误

    • □ 对-□ 错误

    • □ 对-□ 错误

    • □ 对-□ 错误

    同一行的另一个值(false)未选中,同一个值的另一个选项(true)未选中,以便在每个事件中始终满足初始条件(参见上面的逻辑)

    HTML:

    
    (一)
    

    (二)

    (三)

    (四)

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

    您可以使用:

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

    如果您可以共享html,那就太好了。我会使用单选按钮而不是复选框。这样,你的第三条规则一直都是有效的。你试过了吗,或者你想要一个熟食。在此处分享您的努力,以便有人能够理解您的努力。好问题我们需要html来验证您是否遗漏了某些内容请检查我的答案。如果选择false 2次,true 1次,则返回true。您能否实现单击事件复选框?如果在后一示例的问题1上单击“true”,结果应该是一个选定的选项only@MilindAnantwar我将复选框改为单选按钮,它就像一个符咒!
    $('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;
    }});