基于其他字段的多字段验证

时间:2013-04-16 07:32:14

标签: jquery asp.net jquery-validate webforms

我的设置是我有一个名为claimaint_rep的字段,现在当该值为是时我想要多个字段。现在我正在使用jquery验证。我的代码目前是:

 $('#aspnetForm').validate({
        errorPlacement: function (error, element) { },

        rules:
                {
                    claimsol:
                        {
                            required: function (element) {
                                return $("#ctl00_ContentPlaceHolder1_claimant_rep").val() == "Yes";
                            },
                            minlength: 2
                        }

                },

        highlight: function (element) {
            $(element).closest('.control-group').removeClass('success').addClass('error');
        },
        success: function (element) {
            $(element).closest('.control-group').removeClass('error').addClass('success');
        }
    });

示例HTML:

<div class="control-group">
    <label class="control-label" for="inputEmail">Reference Number</label>
    <div class="controls">      
        <asp:TextBox ID="solicitor_reference" CssClass="span3 claimsol" runat="server"></asp:TextBox>
    </div>
  </div>

字段命名是由于它是一个ASP Webform(ugh),现在看来,claimol规则只适用于一个名为claimol的字段?我想将该规则应用于多个字段,理想情况下无需在规则部分中设置每个字段。我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

引用OP:

  

我想将该规则应用于多个字段,理想情况下没有   在规则部分设置每个。

我真的不知道你最终想要实现什么,但只有几种方法可以批量应用规则。

1)rules('add') method用于动态地将规则添加到jQuery目标选择器。如果选择器以多个字段为目标,则必须将此方法包含在.each()

$('[name*="field"]').each(function() {
    $(this).rules('add', {
        required: true,
        number: true,
        messages: { // optional custom messages
            required:  "your custom message",
            number:  "your custom message"
        }
    });
});

实现这一目标的各种方法是无限的。

请参阅:https://stackoverflow.com/a/15116062/594235

2)addClassRules() method用于创建代表您的复合规则的class名称。 (但是,覆盖默认错误消息并不像第1项那样简单。)

$.validator.addClassRules("myclass", {
    required: true,
    minlength: 2
});

您还必须将class名称添加到需要使用该规则的每个输入。

<input type="text" class="myclass" name="field" />

DEMO:http://jsfiddle.net/62uua/

3)或者您可以使用addMethod() method基于您的依赖函数创建一个全新的规则。

$.validator.addMethod("myrule", function(value, element) { 
    // your function
    // return false triggers the error
    // return true passes validation
}, "Custom message");

有关所有可用方法和用法,请参阅文档:http://docs.jquery.com/Plugins/Validation


修改

如果您尝试禁止显示错误消息,请不要像在此处那样传递空回调函数,

errorPlacement: function (error, element) { },

改为传递return false

errorPlacement: function (error, element) { 
    return false;  // suppress default error message placement
},