我使用相同的表单来添加和编辑值。在添加项目期间,我希望它强制对服务器执行名称检查。但是,在编辑模式期间,我希望它不进行验证,因为名称可能不会更改。我尝试根据下面的文档链接将验证器中的ignore属性设置为“ignore”类。我在名称输入中使用相同的类名,但这不起作用。它一直在验证服务器。有什么想法吗?
我正在使用的代码的URL,主要是验证功能。 http://jqueryvalidation.org/validate/
根据ignore属性的文档,它声明:
验证时要忽略的元素,只需将其过滤掉即可。使用了jQuery的not-method,因此not()接受的所有内容都可以作为此选项传递。始终忽略提交和重置类型的输入,禁用的元素也是如此。
我查看了代码,只能看到它在调用validator.resetForm()
期间影响清理错误。这部分代码正常工作。
答案 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