在用户提交表单之前,我不希望进行任何验证
第一次。这就是为什么我设置了keyup和onfocus为false。但当
提交验证被触发一次,我希望下次验证
在按键启动时触发。
可以这样定制jquery验证插件吗?
您要求的是所谓的“惰性验证”,这已经是
违约
插件的行为。
See documentation
:
在字段被标记为无效之前,验证是惰性的:之前
首次提交表单时,用户可以通过
字段而不会收到烦人的消息,它们不会被窃听
在有机会实际输入正确值之前
因此,只需通过以下方式恢复插件的默认功能
删除
onkeyup: false
和
onfocusout: false
。(根据文件
不能
将这些设置为
true
.)
你也必须
去除
onsubmit: true
because like
onkeyup
and
onfocusout
, that is already the default behavior. As per documentation
, "
真的
是
不
有效值
“用于此选项。
换句话说,您的设置正在破坏和/或阻止您所请求的确切行为。。。
onkeyup: false, // <- preventing all key up validation
onfocusout: false, // <- preventing all focus out validation
onsubmit: true, // <- likely breaking something else
去除
以上三行。
否则,您可以根据自己的喜好调整行为
过度乘坐
这个
聚焦
和
打开键盘
回调函数。这些是默认值。。。
$('#form-subscribe').validate({
onfocusout: function(element) {
if (!this.checkable(element) && (element.name in this.submitted || !this.optional(element))) {
this.element(element); // triggers validation on the field
}
},
onkeyup: function(element, event) {
if (event.which === 9 && this.elementValue(element) === "") {
return;
} else if (element.name in this.submitted || element === this.lastElement) {
this.element(element); // triggers validation on the field
}
},
....
防止
onfocuout
从激发到第一次提交后,按如下方式修改它。(默认的“懒惰”行为仅忽略
required
聚焦规则。)
onfocusout: function(element) {
if (!this.checkable(element) && element.name in this.submitted) {
this.element(element); // triggers validation on the field
}
},
...
还要确保您使用的是最新版本的插件。