jQuery - 如何动态添加验证规则

时间:2010-06-13 21:07:37

标签: jquery

我正在尝试动态地将验证规则添加到某些动态控件中:

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

但是这行给了我以下错误:

$。data(element.form,“validator”)为空

使用validate函数定义规则静态方式正常。我做错了什么?

谢谢, 贾斯汀

5 个答案:

答案 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)

The documentation说:

  

添加指定的规则并返回   第一个匹配的所有规则   元件。需要父表单   经过验证,即   $(“form”)。首先调用validate()。

你做到了吗?错误消息类型表示您没有。

答案 4 :(得分:0)

如果您要让jquery验证对动态添加的项目进行自动选择验证,则只需删除并在整个表单上添加验证即可,如下所示

//remove validations on entire form
$("#yourFormId")
    .removeData("validator")
    .removeData("unobtrusiveValidation");

//Simply add it again
$.validator
    .unobtrusive
    .parse("#yourFormId");