默认情况下,对于文本输入,jQuery Validate 在 "blur" (onfocusout:
)、"keyup" (onkeyup:
) 和 "submit" (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/
顺便说一句:虽然我不会这样做.blur()
,但您的原始代码在 v1.9 和 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
验证才会开始操作。
工作演示:http: //jsfiddle.net/6s4rj/