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

You*_* Ch -2 jquery jquery-validate

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

Spa*_*rky 7

你需要提供更多关于你要做什么的详细信息,但是到目前为止我可以回答你的问题.

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

.validate()被调用一次来初始化表单上的插件.它不是按需触发验证的方法.初始化后,表单将根据插件中内置的各种事件回调自动进行验证.更多细节如下......

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

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

当您致电时.validate(),您正在初始化表单上的插件.所以,是的,这意味着该表格已经准备好,它会自动触发做在所有常见的事件,如验证测试submit,onkeyup,onfocusout,和选择,按钮和复选框click.你为什么不想要那个?

要以编程方式执行验证测试,您可以调用内置.valid()方法,该方法非常类似于submit事件,因为它将触发整个表单上的验证测试,表单将显示任何错误. .valid()还将返回一个布尔值truefalse指示表单是否通过了验证测试.

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

如果由于某种原因你需要完全"禁用"和"启用"验证,你不能直接这样做,因为没有内置的方法从表单中解封插件.但是,您可以使用内置rules('remove')rules('add')方法来模拟它.没有任何字段的任何规则,它只会表现得好像根本没有验证.但是,您仍然可以使用其他插件选项,例如submitHandler回调,以防您使用ajax进行数据提交.