为一个输入打开/关闭Jquery验证

时间:2013-09-25 22:12:09

标签: jquery jquery-validate

我使用相同的表单来添加和编辑值。在添加项目期间,我希望它强制对服务器执行名称检查。但是,在编辑模式期间,我希望它不进行验证,因为名称可能不会更改。我尝试根据下面的文档链接将验证器中的ignore属性设置为“ignore”类。我在名称输入中使用相同的类名,但这不起作用。它一直在验证服务器。有什么想法吗?

我正在使用的代码的URL,主要是验证功能。 http://jqueryvalidation.org/validate/

根据ignore属性的文档,它声明:

验证时要忽略的元素,只需将其过滤掉即可。使用了jQuery的not-method,因此not()接受的所有内容都可以作为此选项传递。始终忽略提交和重置类型的输入,禁用的元素也是如此。

我查看了代码,只能看到它在调用validator.resetForm()期间影响清理错误。这部分代码正常工作。

1 个答案:

答案 0 :(得分:41)

  • 您无法为表单或单个字段元素打开/关闭jQuery Validate插件。没有方法或解决方法。

  • ignore选项在.validate()调用中设置,这是插件的“一次性”初始化,因此您无法动态更改或切换选项。对.validate()的任何后续调用始终被忽略。

使用.validate()初始化插件后,您唯一的解决方案是使用.rules()方法动态'add''remove'各个字段元素的规则。不要被'add'术语所迷惑......此方法还允许您覆盖现有规则,因此您不必首先'remove'这些规则。

要将字段动态设置为required

$('#myfield').rules('add', {
    required: true   // set a new rule
});

要将字段动态设置为 required

$('#myfield').rules('add', {
    required: false   // overwrite an existing rule
});

OR

$('#myfield').rules('remove', 'required');  // removes only specified rule(s)

OR

$('#myfield').rules('remove');  // removes all rules for this field

文档http://jqueryvalidation.org/rules/