2014-03-07 32 views
1

我的表單包含母版頁和子頁..如何讓jQuery.validate()在使用母版頁的ASP.NET中工作?

如何驗證子頁面內的表單?當我嘗試使用母版頁時,驗證不會運行。但是,當我不使用母版頁時,一切都正常。

請解釋如何讓jQuery Validate在使用Master Page的ASP.NET中工作。

+0

母版頁總是先調用,並將事件綁定到dom元素,甚至在它們在子頁面中創建之前。所以驗證需要在子頁面中完成。爲了減少工作量,您可以將所有的驗證函數轉移到一個新的JS文件中,並將其包含在所有的子頁面中。 –

回答

0

我意識到這有點晚了,但我想我會分享我的發現,看到我剛剛經歷了這一點。

要在ASP.Net母版頁環境中使用jQuery驗證,你要記住,佔位符改變一切,包括姓名。由於.validate()嚴重依賴每個字段的名稱,因此必須爲每個字段獲取客戶端名稱。因爲這可以根據您的佔位符改變(我最終看起來像name="ctl00$ContentPlaceHolder1$FirstName"),你的代碼應該是這個樣子:

$(document).ready(function() { 
     $('form').validate({ 
      rules: { 
       <%= FirstName.Name %>: { 
        required: true, 
        minlength: 2, 
        maxlength: 25 
       }, 
       <%= LastName.Name %>: { 
        required: true 
       }, 
       <%= Email1.Name %>: { 
        required: true, 
        email: true 
       }, 
       <%= Email2.Name %>: { 
        required: true, 
        email: true, 
        equalTo: "#<%= Email1.ClientID %>" 
       }, 
       <%= Password1.Name %>: { 
        required: true, 
        minlength: 7 
       }, 
       <%= Password2.Name %>: { 
        required: true, 
        minlength: 7, 
        equalTo: "#<%= Password1.ClientID %>" 
       } 
      }, 
      messages:{ 
       <%= FirstName.Name %>: { 
        required: "Please enter your first name.", 
        minlength: $.validator.format("Your first name must be at least {0} characters.") 
       }, 
       <%= LastName.Name %>: { 
        required: "Please enter your last name.", 
        minlength: $.validator.format("Your last name must be at least {0} characters.") 
       }, 
       <%= Email1.Name %>: { 
        required: "Please enter your email address.", 
        email: "Please enter a valid email address." 
       }, 
       <%= Email2.Name %>: { 
        required: "Please confirm your email address.", 
        email: "Please confirm with a valid email address.", 
        equalTo: "Email entries do not match." 
       }, 
       <%= Password1.Name %>: { 
        required: "Please enter a password", 
        minlength: $.validator.format("Your password must be at least {0} characters.") 
       }, 
       <%= Password2.Name %>: { 
        required: "Please confirm your password.", 
        equalTo: "Passwords do not match." 
       } 
      }, 
      errorClass: "error-label", 
      wrapper: "li", 
      errorLabelContainer: "#ErrorSection" 
     }); 
    }); 

此代碼是直接取自我的工作網頁使用jQuery Validation版本1.12.0和jQuery版本1.11.0。

編輯:我想補充一點的是,我驗證輸入也runat="server"對服務器端的交互。