jQueryvalidation插件 – 焦点事件与键/鼠标事件不一致

我正在使用查询validation插件(http://docs.jquery.com/Plugins/Validation),我的目标是在提交表单之前显示错误消息。 为此,我使用.valid()方法。

我不想在出现错误之前显示这些消息,所以我先隐藏它们。 当字段第一次聚焦时,我不想显示错误消息。 当使用鼠标聚焦输入时,这非常有效,但是当您使用Tab键聚焦字段时,无论如何都会显示错误消息。

我在这里创建了一个小提琴来演示焦点​​问题: http : //jsfiddle.net/tucsonlabs/WQnHN/4/

这应该工作: 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; 阻止默认事件并防止事件冒泡。

这效果更好:

 $(document).ready(function() { $('#myForm').validate(); //$('#myForm').valid(); $('#myForm').hideErrors(); $('input').blur(function() { if( !$(this).valid() ) $(this).next('label.error').show(); }); });​ 

我需要使用@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(); } });