jQuery验证,即时更改规则

时间:2012-05-30 17:52:53

标签: jquery-validate

我一直在Javascript中设置我的jQuery Validate规则,就像在本文中一样: http://www.raymondcamden.com/index.cfm/2009/2/10/An-Introduction-to-jQuery-and-Form-Validation-2

我将规则存储在名为validationRules的jsony对象中,然后在调用Validate插件时传递规则:

$("#myForm").validate(validationRules);

稍后,我想基于用户交互以编程方式更改值,如下所示:

validationRules.rules.Quantity.min=10;

即使更新了值,Validate也不会遵循新值。我也试过,重新调用插件:

$("#myForm").validate(validationRules);

但这没有帮助。

我可以直接与插件对话:

$("#Quantity").rules("add", {min: 10});

它的表现与人们预期的一样。因此,我将使用该语法即时更改规则,但是有人可以告诉我如何告诉Validate遵守validationRules中的更新规则吗?

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,我花了很多时间试图解决它。最后,我在Validation Plugin创建者的GitHub帐户中找到了一个技巧:

var $form       = $('#formId'),
    newRules    = {rules...},
    newMessages = {messages...};

$.each(newRules , function(key, value) {
    newRules [key] = $.validator.normalizeRule(value);
});
$.extend( $form.validate().settings.rules, newRules );
$.extend( $form.validate().settings.messages, newMessages );

我对这些消息不太确定,我现在正在使用它,似乎工作正常。 这是您可以阅读更多信息的链接: https://github.com/jzaefferer/jquery-validation/issues/214