我正在使用Joern的jquery validation plugin 1.6。
我的目标是具有以下行为:一旦用户将其聚焦,就删除元素的错误消息。根据我的理解设置'focusCleanup:true'应该照顾这个。
但是(至少在我的浏览器上(Linux上的Firefox 3.5.7)),如果我点击,我只会得到所需的行为(即,一旦你关注它就会消失一个字段的错误消息)进入田野;它无法正确处理标签。
示例代码:
HTML:
<form id='abc' name='abc'>
<input type="text" id="t1" name="t1"/>
<input type="text" id="t2" name="t2"/>
<input type="submit" id="submit" value='submit'/>
</form>
JS:
$("#abc").validate({
focusCleanup: true,
focusInvalid: false,
rules: {t1: {required: true, email:true}, t2: {required: true,email:true}}
});
我设置'focusInvalid:false',因为文档说应该避免组合focusCleanup和focusInvalid;根据我的经验,评论这条线没有任何区别。
我做错了吗?
答案 0 :(得分:8)
您所遇到的是正确的行为,可能有点违反直觉。 You can see your code in a demo here。当您点击时,您仅关注文本框,但是当您选择了两个重要事件时,您会同时触发focusin
和 keyup
。
由于您正在触发keyup
正在发生的事情 清除错误,但是因为您在框中键入内容(它不会将标签与其他标签区分开来)密钥,就像一个字母)...但是它重新评估该框是否在每个keyup
上都有效,显示与之前相同的错误,因为标签对此没有任何影响...因为它没有添加任何文字。
如果要禁用onkeyup
验证,它将停止这样做,如下所示:
$("#abc").validate({
focusCleanup: true,
rules: {t1: {required: true, email:true}, t2: {required: true,email:true}},
onkeyup: false,
});
For comparison, here's that code in a demo,因此您可以将其与上面的原始演示进行比较。