我刚刚给了 validate (errorElement, ...) 选项,我设置了规则,没有调用 validate 方法,或者将它与任何事件关联,但是 jQuery 自动验证,如何控制它何时验证?
1 回答
您将需要提供更多关于您正在尝试做的事情的详细信息,但我可以回答您到目前为止所写的问题。
标题:为什么 jquery 验证而不调用验证?
.validate()
被调用一次以初始化表单上的插件。它不是一种按需触发验证的方法。初始化后,表单将根据插件中内置的各种事件回调自动验证。更多详情如下...
OP:我刚刚为验证(errorElement,...)提供了选项,并且我设置了规则,没有调用验证方法,或者将其与任何事件相关联,但是 jquery 自动验证,如何控制它何时验证?
您不需要将插件与任何事件相关联,因为插件已经自动执行此操作。如果没有,那就太没用了。
当您调用时.validate()
,您正在初始化表单上的插件。所以,是的,这意味着表单现在已经准备好了,它将自动对所有常见事件触发验证测试,例如submit
, onkeyup
,onfocusout
和 select, button & checkbox click
。你为什么不想要那个?
要以编程方式执行验证测试,您可以调用内置.valid()
方法,该方法非常类似于submit
事件,因为它将触发整个表单的验证测试,并且表单将显示任何错误。 .valid()
还将返回一个布尔值true
或false
指示表单是否通过了验证测试。
如果您只需要在单个元素而不是整个表单上触发验证测试,您可以使用$('#myelement').valid()
. 同样,显示任何消息并返回一个布尔值。
如果出于某种原因您需要完全“禁用”和“启用”验证,则不能直接执行此操作,因为没有用于从表单取消绑定插件的内置方法。但是,您可以使用内置的rules('remove')
和rules('add')
方法来模拟它。如果对任何字段没有任何规则,它只会表现得好像根本没有验证一样。但是,您仍然可以使用其他插件选项,例如submitHandler
回调,以防万一您使用 ajax 进行数据提交。