为什么jQuery Validate插件在不调用validate()的情况下进行验证?

时间:2013-02-12 10:26:08

标签: jquery jquery-validate

我刚刚给出了validate(errorElement,...)的选项,并且我设置了规则,没有调用validate方法,或者将它与任何事件相关联,但jQuery自动验证,如何控制验证何时?< / p>

1 个答案:

答案 0 :(得分:7)

您需要提供更多关于您要做的事情的详细信息,但是到目前为止我可以回答您的问题。

  

标题:为什么jquery在不调用validate的情况下验证?

.validate() is called once to initialize the plugin on the form。它不是按需触发验证的方法。初始化后,表单将根据插件中内置的各种事件回调自动进行验证。更多细节如下......

  

OP :我刚刚给出了validate(errorElement,...)的选项,我设置了   规则,不调用验证方法,或将其与任何方法相关联   事件,但jquery自动验证,如何控制它   验证?

您不需要将插件与任何事件相关联,因为插件已经自动执行此操作。如果不这样做,那将毫无用处。

When you call .validate(), you are initializing the plugin on the form。所以,是的,这意味着表单现已准备就绪,它会自动执行针对所有常见事件触发的验证测试,例如submitonkeyuponfocusout以及选择,按钮和按钮。复选框click。你为什么不想要那个?

要以编程方式执行验证测试,您可以调用the built-in .valid() method,这与submit事件非常相似,因为它会在整个表单上触发验证测试表单将显示任何错误。 .valid()还会返回布尔值truefalse,表明表单是否通过了验证测试。

如果您只需要在单个元素而不是整个表单上触发验证测试,则可以使用$('#myelement').valid()。同样,显示任何消息并返回布尔值。

如果由于某种原因你需要完全“禁用”和“启用”验证,你不能直接执行此操作,因为没有内置方法可以从表单中取消绑定插件。但是,您可以使用the built-in rules('remove') and rules('add') methods进行模拟。没有任何字段的任何规则,它只会表现得好像根本没有验证。但是,您仍然可以使用其他插件选项,例如submitHandler callback,以防您使用ajax进行数据提交。