我正在使用查询验证插件(http://docs.jquery.com/Plugins/Validation),我的目标是在提交表单之前显示错误消息。为此,我使用.valid()方法。
我不想在出现错误之前显示这些消息,所以我先隐藏它们。当第一次聚焦该字段时,我不想显示错误消息。使用鼠标聚焦输入时效果很好,但是当您使用Tab键聚焦字段时,无论如何都会显示错误消息。
我在这里创建了一个小提琴来演示焦点问题:http://jsfiddle.net/tucsonlabs/WQnHN/4/
答案 0 :(得分:2)
这应该有效:http://jsfiddle.net/yQRvZ/
var code;
$('input').keyup(function(e) {
code = (e.keyCode ? e.keyCode : e.which);
if(code == 9) {
return false;
}
});
每当你释放一个密钥(这是.keyup()
)并且input
字段聚焦时,这个jQuery代码会检查已发布密钥的密钥代码。
对于Tab
,密钥代码为9
,因此每次释放Tab时,return false;
都会阻止默认事件并阻止事件冒泡。
答案 1 :(得分:1)
这更好用:
$(document).ready(function() {
$('#myForm').validate();
//$('#myForm').valid();
$('#myForm').hideErrors();
$('input').blur(function() {
if( !$(this).valid() ) $(this).next('label.error').show();
});
});
答案 2 :(得分:1)
我需要使用@mindandmedia和@Fabian的代码组合。
这对我有用:
var code;
$('input').keyup(function(e) {
code = (e.keyCode ? e.keyCode : e.which);
if(code == 9) {
return false;
}
});
$('#myForm').validate();
$('input').blur(function() {
if( !$(this).valid() ) {
$(this).next('label.error').show();
}
});