2010-03-20 78 views
1

後,我使用的是jquery validation plugin加入jQuery驗證表單創建

首先,我驗證添加到窗體:

$('#EmployeeForm').validate({ 
     rules: { 
      "Employee.FirstName": "required", 
      "Employee.PatronymicName": "required", 
      "Employee.LastName": "required", 
      "Employee.BirthDay": { required: true, date: true } 
     }, 

     messages: { 
      "Employee.FirstName": { required: "*" }, 
      "Employee.PatronymicName": { required: "*" }, 
      "Employee.LastName": { required: "*" }, 
      "Employee.BirthDay": { required: "*", date: "00.00.00 format" } 
     } 
    }); 

它正常工作,直到在這裏。我後來需要驗證規則添加到其他表單元素:

$('#Address_A.Phone1, #Address_A.Phone2, #Address_B.Phone1, #Address_B.Phone2') 
      .rules("add", { 
       digits: true 
      }); 

在這裏,我得到一個錯誤:「形式」爲空或不是對象

我檢查,形式和所有的在我添加驗證之前,它中的元素被創建。
我無法弄清楚什麼是錯的。

回答

1

只是猜測是Address_A.Phone1元素的ID?

如果是的話,我想你的問題來自於你在元素ID中使用.的事實。但jQuery不會理解例如#Address_A.Phone1作爲給我元素與編號Address_A.Phone1,而是將解釋此選擇器爲:給我與元素Address_A其中有Phone1類的元素。

但實際上這並不能解釋錯誤。你可以附加在哪一行發生此錯誤。它是在你的代碼中還是在插件代碼中?如果在插件內部的線上

+0

謝謝!!!我使用的是元素名稱而不是id。再次感謝抖動 – CoffeeCode

1

我沒有使用過該插件但是從我在documentation看到你應該用正常的jQuery選擇,而不是#Address_A.Phone1, #Address_A.Phone2, #Address_B.Phone1, #Address_B.Phone2(當然這也是一種正常的選擇,但他們在正常使用沒有任何意義)。

因此嘗試使用這樣的:#EmployeeForm #first-name, #EmployeeForm #last-name

+2

你可能會在這裏 - 如果他使用ASP.NET MVC,這些可能是字段的名稱,但他使用ID選擇器。也許它需要是'[name = Address_A.Phone1] ...'。但是,如果選擇器失敗,則根本沒有任何要應用規則的東西,我不認爲會出現錯誤。 – tvanfosson

1

是否有可能,後者加入由AJAX返回的結果 - 可能已經取代頁面上的形式的結果呢?或者可能在驗證插件應用之前可能正在運行的單獨的「加載」部分?我建議使用unminified驗證腳本,並通過調試器(Firefox/Firebug將是我的首選)。在驗證設置和規則添加中加入斷點,以查看哪些是首先被擊中的。如果通過AJAX替換表單,則必須在添加規則之前重新應用驗證插件,因爲舊錶單不再可用。