我正在尝试动态地将验证规则添加到某些动态控件中:
$("input[id*=Hours]").rules("add", "required");
但是这行给了我以下错误:
$。data(element.form,“validator”)为空
使用validate函数定义规则静态方式正常。我做错了什么?
谢谢, 贾斯汀
答案 0 :(得分:111)
您需要先调用.validate()
才能以这种方式添加规则,如下所示:
$("#myForm").validate(); //sets up the validator
$("input[id*=Hours]").rules("add", "required");
.validate()
documentation是一个很好的指南,这里是关于.rules("add", option)
的简介:
添加指定的规则并返回第一个匹配元素的所有规则。要求验证父表单,即首先调用
$("form").validate()
。
答案 1 :(得分:29)
要验证所有动态生成的元素,可以为每个元素添加一个特殊类,并使用each()函数,如
$("#DivIdContainer .classToValidate").each(function () {
$(this).rules('add', {
required: true
});
});
答案 2 :(得分:4)
除了确保首先调用$("#myForm").validate();
之外,还要确保在添加验证规则之前已将动态控件添加到DOM中。
答案 3 :(得分:2)
你做到了吗?错误消息类型表示您没有。添加指定的规则并返回 第一个匹配的所有规则 元件。需要父表单 经过验证,即 $(“form”)。首先调用validate()。
答案 4 :(得分:0)
如果您要让jquery验证对动态添加的项目进行自动选择验证,则只需删除并在整个表单上添加验证即可,如下所示
//remove validations on entire form
$("#yourFormId")
.removeData("validator")
.removeData("unobtrusiveValidation");
//Simply add it again
$.validator
.unobtrusive
.parse("#yourFormId");