2013-04-16 92 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

啊對,謝謝你關於錯誤信息抑制的提示。很好的答案。 –

相關問題