jQuery验证:几个组中的任何一个单选按钮

时间:2014-06-20 20:34:47

标签: jquery jquery-validate

我有一个带有三组单选按钮的表单,让我们说:

<input type="radio"  name="answer_option1" value="1" id="ans_options1" />
<input type="radio"  name="answer_option1" value="2" id="ans_options2" />
<input type="radio"  name="answer_option1" value="3" id="ans_options3" />
<input type="radio"  name="answer_option1" value="4" id="ans_options4" />

<input type="radio"  name="answer_option2" value="5" id="ans_options5" />
<input type="radio"  name="answer_option2" value="6" id="ans_options6" />
<input type="radio"  name="answer_option2" value="7" id="ans_options7" />
<input type="radio"  name="answer_option2" value="8" id="ans_options8" />

<input type="radio"  name="answer_option3" value="9" id="ans_options9" />
<input type="radio"  name="answer_option3" value="10" id="ans_options10" />
<input type="radio"  name="answer_option3" value="11" id="ans_options11" />
<input type="radio"  name="answer_option3" value="12" id="ans_options12" />

如果选择了这12个无线电中的任何一个,则表格应通过验证(在jqueryvalidation.org意义上)。我能够通过按钮将一种或多种类别的“需求”类挂起来的常用方法,但仅适用于个别群体,而不是所有群组 - 在第1组中选择一个无线电仍会导致对缺少选择的投诉在第2组和第3组中。我也使用require_from_group进行了操作,但这似乎并没有那么好。有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

引用OP

  

&#34;如果选择了这12个无线电中的任何一个,表单应通过验证。 ...&#34;

     

&#34; ...我也与require_from_group进行了比赛,但这看起来并没有好转。&#34;

The require_from_group method对我来说很好,但是你没有显示足够的代码来知道你哪里出错了。只需确保包含the additional-methods.js file

我的演示使用以下jQuery以及单选按钮的HTML标记,但我确保将您的第三个按钮组重命名为answer_option3

$(document).ready(function() {

    $('#myform').validate({
        rules: {
            answer_option1: {
                require_from_group: [1, '[name^="answer_option"]']
            },
            answer_option2: {
                require_from_group: [1, '[name^="answer_option"]']
            },
            answer_option3: {
                require_from_group: [1, '[name^="answer_option"]']
            }
        },
        groups: {  // groups all messages into one
            arbitraryName: 'answer_option1 answer_option2 answer_option3'
        }
    });

});

DEMO:http://jsfiddle.net/qf2Pg/1/

备注groups选项只是将多个字段的消息分组为一个。非常适合这种情况,当您只需要满足三分之一时,通常可以在三个字段上同时收到消息。


<强> ALTERNATIVE

可以利用.rules('add')方法来缓解上面的重复规则声明。

$('[name^="answer_option"]').each(function() {
    $(this).rules('add', {
        require_from_group: [1, '[name^="answer_option"]']
    });
});

DEMO 2:http://jsfiddle.net/qf2Pg/2/