jquery validate:focusCleanup:true和focusInvalid:false不按预期工作

我正在使用Joern的jqueryvalidation插件 1.6。

我的目标是具有以下行为:一旦用户关注它,就删除元素的错误消息。 根据我的理解设置’focusCleanup:true’应该照顾这个。

但是(至少在我的浏览器上(Linux上的Firefox 3.5.7)),如果我点击该字段,我只能获得所需的行为(即,一旦你关注它就会消失一个字段的错误消息); 它没有正确处理标记到字段中。

示例代码:

HTML:

JS:

  $("#abc").validate({ focusCleanup: true, focusInvalid: false, rules: {t1: {required: true, email:true}, t2: {required: true,email:true}} }); 

我设置’focusInvalid:false’,因为文档说应该避免组合focusCleanup和focusInvalid; 根据我的经验,评论这条线没有任何区别。

难道我做错了什么?

你所经历的是正确的行为,可能有点违反直觉。 您可以在此处的演示中查看代码 。 当您单击时,您关注文本框,但是当您选项卡导致2个重要事件时,您将触发focusin keyup

因为你正在触发keyup正在发生的事情就是清除错误,但是因为你在盒子里输入了一些东西(它没有将tab与任何其他键区分开来,比如一个字母)……但是它重新开始评估该框是否在每个keyup上都有效,显示与之前相同的错误,因为该选项卡对此没有任何影响…因为它没有添加任何文本。

如果要禁用onkeyupvalidation,它将停止这样做,如下所示:

 $("#abc").validate({ focusCleanup: true, rules: {t1: {required: true, email:true}, t2: {required: true,email:true}}, onkeyup: false, });​ 

为了比较,这是演示中的代码 ,因此您可以将其与上面的原始演示进行比较。