0

我正在使用 jquery.validate 表单表单验证。问题是表格上有大约 40 个无线电输入,s1_AM, s1_PM, s2_AM, s2_PM,每个radio输入大约有 10 个。必须检查四个选项中的至少一个,但不是全部四个。如果我class="required"输入代码,这是不正确的,因为它需要所有四个选项。我该如何解决这个问题?

理想情况下,id 喜欢保持验证方式不变,但如果收音机为空,则添加警报。

jQuery

jQuery.validator.messages.required = "";
$("#enroll").validate({
invalidHandler: function(e, validator) {
    var errors = validator.numberOfInvalids();
    if (errors) {
        var message = errors == 1
            ? 'You missed 1 required field'
            : 'You missed ' + errors + ' required fields';
        $("div.Error span").html(message);
        $("div.Error").show();
    } else {
        $("div.Error").hide();
    }
}
});

收音机是动态的顺便说一句:

if($row['s1_AM_fill'] < $row['s1_AM_cap']) {
   $s1_AM .= '<input type="radio" name="s1_AM" id="s1_AM_'.$id.'" value="'.$id.'" />;
}

再加上三个,s1_PMfors2_AMs2_PM

这就是我所做的,除了警报一旦开始,它就不会停止

$('#submit').click(function () {$("ul.courses").each(function(){
  $(this).find("input[type=radio]").each(function(){
    alert("You must select at least 1 available course");
});
return false;
});
4

1 回答 1

1

您不应使用仅可能干扰插件的内置事件处理程序的附加submit或处理程序函数。click

您只需使用插件的内置addMethod()方法创建一个新规则。像这样的东西...

jQuery.validator.addMethod('customrule', function() {
    return ($("input[name='s1_AM']:checked").val() || $("input[name='s1_PM']:checked").val() || $("input[name='s2_AM']:checked").val() || $("input[name='s2_PM']:checked").val());
}, 'Please select from at least one group' );

新规则检查是否至少radio使用了四个组中的一个。该规则的应用如下...

$(document).ready(function() {

    $('#enroll').validate({ // initialize the plugin
        rules: {
            's1_AM': {
                customrule: true
            },
            's1_PM': {
                customrule: true
            },
            's2_AM': {
                customrule: true
            },
            's2_PM': {
                customrule: true
            }
        },
        groups: { // use this option to consolidate the four messages into one
            groupname: "s1_AM s1_PM s2_AM s2_PM"
        }
    });

});

工作演示:http: //jsfiddle.net/93jTZ/

您需要根据自己的项目规范调整错误放置功能。

其他选项: http ://docs.jquery.com/Plugins/Validation/validate#toptions

于 2013-02-18T07:10:03.610 回答