使用验证1.8,我在所有表单的输入元素上使用$ .blur函数,以便在用户选中时触发该字段的验证:
$('#myform :input').blur(function() {
$("#myform").validate().element( this );
});
哪个效果很好。但是我刚刚更新到1.9,现在我的字段正在验证密钥而不是模糊。
我的设置没有改变任何内容,只是切换到1.9。
我看到有很多变化,但我没有看到其他文档。
任何帮助都将不胜感激。
的澄清 的
之前,我的元素最初将在模糊上验证,但如果元素处于错误状态,则元素将主动验证密钥,等等,如果用户重新进行更改。这是我想要的行为。在初始输入时,在模糊之前没有活动验证,但是一旦字段处于错误状态,该字段应该主动验证更改,密钥等。现在,该元素正在初始条目的密钥上验证
答案 0 :(得分:9)
默认情况下 ,对于文字输入,jQuery Validate会在“模糊”(onfocusout:
),“keyup”(onkeyup:
)上触发和“提交”(onsubmit:
)事件。
要让它仅验证“模糊”和“提交”字段,只需将onkeyup:
选项设置为false ...
$(document).ready(function() {
$('#myform').validate({
onkeyup: false, // to use onkeyup, remove this line
// other rules and options
});
});
所有版本的工作方式相同......
工作演示(v1.10):http://jsfiddle.net/M2MLL/
工作演示(v1.9):http://jsfiddle.net/KSgLb/
工作演示(v1.8):http://jsfiddle.net/k87Lp/
onfocusout
的默认行为是,只有字段中的某些内容(或之后初始提交事件),否则只需将该字段留空并单击一个新字段即可。
如果你想每次都在“模糊”上进行验证,无论如何,只需像这样修改onfocusout:
的回调函数......
$(document).ready(function() {
$('#myform').validate({
onfocusout: function(element, event) {
this.element(element);
},
onkeyup: false,
// other rules and options
});
});
工作演示(v1.9):http://jsfiddle.net/eRNTu/
版本1.10也有效:http://jsfiddle.net/Mev8v/
BTW:虽然我不会使用.blur()
,原始代码was working fine with v1.9 and v1.10执行此操作。 但是,我认为利用插件的onfocusout:
选项的内部功能是实现目标的更强大的方法。
编辑2:
回应OP最后的澄清:
“在初始输入时,在模糊之前没有活动验证,但是一旦字段处于错误状态,该字段应该主动 验证变更,密钥等“
这是一个新的工作演示,修改了onkeyup:
onkeyup: function (element, event) {
if (event.which === 9 && this.elementValue(element) === '') {
return;
} else if (element.name in this.submitted ) {
this.element(element);
}
},
该字段最初忽略任何onkeyup
验证,或者未显示任何错误。只有当存在活动错误并且用户返回到字段时,onkeyup
验证才会开始运行。