Jquery Validation插件 – 您可以从选项中启用“急切”validation吗?
我正在项目中使用Jquery Validation插件。
默认情况下,插件会在单击提交按钮时validation输入。 该行为是“懒惰的”,以便对用户不显眼。 如果发现错误,则validation变为“急切”并在用户纠正违规条目时validation输入。
有没有办法通过一个选项覆盖最初的“懒惰”行为? 我在文档中找不到任何解决方案。
例:
如果您查看此演示 ,您会注意到用户可以浏览表单,留下空文本框,当用户点击提交时,这些文本框将无法通过validation。 如果用户最初在电子邮件文本框中输入了无效的电子邮件地址,则在单击提交按钮之前不会突出显示该地址。 之后,在每次按键和模糊事件时validation输入。 这就是我想从一开始就激活的东西。
我理解插件创建者的设计选择,但我需要不同的行为。
实际上,我得到的默认行为是关注focusout
和focusout
事件的validation,我在插件代码中看到这些默认行为。 我必须在插件配置中禁用它们才能在提交时获得validation。 也许你应该发布你的一些代码……我不认为情况是完全清楚的。
感谢混乱对这个问题的指导:
要在jqueryvalidation插件上启用急切validation,请将以下选项添加到validate函数:
$('#myform').validate({ onfocusout: function(element) { $(element).valid(); } });
我想补充罗伯特的答案,你可以使用setDefaults()
在默认设置中执行此操作,因此它不依赖于实时validation方法的实际实例(通常不会通过不显眼的validation公开)。
只需使用一个函数覆盖onfocusout
属性,该函数始终通过调用valid()
方法来计算模糊元素:
// enable eager evaluation $.validator.setDefaults({ onfocusout: function (element) { $(element).valid(); } })
热切评估的演示 :
(标签出后需要显示)
// enable eager evaluation $.validator.setDefaults({ onfocusout: function (element) { $(element).valid(); } }); $("form").validate();
input.error { border-color: red }