2013-04-16 94 views
0

我的设置是我有一个名为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网络表单(啊),现在从它好像是,claimsol规则只适用到一个名称为claimsol的字段?我想将该规则应用于多个字段,理想情况下无需在规则部分设置每个字段。我在这里错过了什么?

回答

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 
}, 
+0

代码中会在哪里或者那些被插入,我看到2)项目发布问题后,但它并没有我写的验证模块内坐? –

+0

@RyanMcDonough,项目2将会在文档内的任何位置准备好。你仍然需要用'.validate()'初始化插件。 – Sparky

+0

啊对,谢谢你关于错误信息抑制的提示。很好的答案。 –

相关问题