2010-06-13 82 views
49

我想動態添加驗證規則的一些動態控件:jQuery的 - 如何動態添加驗證規則

$("input[id*=Hours]").rules("add", "required"); 

然而這一行給了我以下錯誤:

$。 data(element.form,「validator」)爲空

定義規則靜態方法與驗證功能工作正常。我究竟做錯了什麼?

感謝, 賈斯汀

回答

95

你需要調用.validate()才能添加規則這樣一來,像這樣:

$("#myForm").validate(); //sets up the validator 
$("input[id*=Hours]").rules("add", "required"); 

.validate() documentation是一個很好的指南,這裏的Blurb的約.rules("add", option)

Adds the specified rules and returns all rules for the first matched element. Requires that the parent form is validated, that is, $("form").validate() is called first.

+3

感謝,要求確認第一解決了這個錯誤。然而,它只是驗證第一個輸入帶有像小時的ID,而不是驗證所有這些,爲什麼? – Justin 2010-06-13 22:15:24

+0

每個ID都被認爲是DOM中的一個獨特元素 - 也許你想在這裏使用一個類? – cars 2013-09-16 18:44:48

+0

jquery驗證使用輸入的名稱屬性而不是Id,也許這就是您的問題Justin – 2014-03-28 19:13:55

2

The documentation舉報:

Adds the specified rules and returns all rules for the first matched element. Requires that the parent form is validated, that is, $("form").validate() is called first.

你這樣做了嗎?錯誤消息種類表示您沒有。

3

除了確保您第一次調用$("#myForm").validate();之前,請確保在添加驗證規則之前,您的動態控件已添加到DOM。

20

驗證所有動態生成的元素可以一類特殊的加入這些元素,並使用每個()函數,像

$("#DivIdContainer .classToValidate").each(function() { 
    $(this).rules('add', { 
     required: true 
    }); 
}); 
+1

作品像魅力:-) – 2015-11-03 10:26:42

+0

消息呢?這裏是來自文檔的示例https://jqueryvalidation.org/rules/#example:-adds-minlength:-2-to-an-element-which-is-already-required – 2016-09-18 15:03:02