我正在项目中使用Jquery Validation插件。
默认情况下,插件会在单击提交按钮时验证输入。该行为是“懒惰的”,以便对用户不显眼。如果发现错误,则验证变为“急切”并在用户更正违规条目时验证输入。
有没有办法通过一个选项覆盖最初的“懒惰”行为?我在文档中找不到任何解决方案。
例:
如果您查看此demo,您会注意到用户可以浏览表单,留下空文本框,当用户点击提交时,这些文本框将无法通过验证。如果用户最初在电子邮件文本框中输入了无效的电子邮件地址,则在单击提交按钮之前不会突出显示该地址。之后,在每次按键和模糊事件时验证输入。这就是我想从一开始就激活的东西。
我理解插件创建者的设计选择,但我需要不同的行为。
实际上,我得到的默认行为是对focusout
和keyup
事件的验证,我在插件代码中看到它们是默认值。我必须在插件配置中禁用它们才能在提交时获得验证。也许你应该发布一些你的代码......我认为情况并不完全清楚。
感谢混乱对这个问题的指导:
要在jquery验证插件上启用急切验证,请将以下选项添加到validate函数:
$('#myform').validate({
onfocusout: function(element) {
$(element).valid();
}
});
我想补充罗伯特的答案,你可以使用setDefaults()
在默认设置中执行此操作,因此它不依赖于点击validate方法的实际实例(通常不会通过不显眼的验证来暴露)。
只需使用一个函数覆盖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
}
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js"></script>
<form >
<input type="text" name="Name" required /><br/>
<input type="text" name="Email" required /><br/>
<input type="submit" value="Submit"/>
</form>
正常演示 (提交前不会显示)
$("form").validate();
input.error {
border-color: red
}
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js"></script>
<form >
<input type="text" name="Name" required /><br/>
<input type="text" name="Email" required /><br/>
<input type="submit" value="Submit"/>
</form>