lar*_*els 3 validation jquery jquery-validate
我正在使用Joern的jquery验证插件 1.6.
我的目标是具有以下行为:一旦用户关注它,就删除元素的错误消息.根据我的理解设置'focusCleanup:true'应该照顾这个.
但是(至少在我的浏览器上(Linux上的Firefox 3.5.7)),如果我点击该字段,我只会获得所需的行为(即,一旦你关注它就会消失一个字段的错误消息); 它不处理tab键切换到字段正确.
示例代码:
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>
Run Code Online (Sandbox Code Playgroud)
JS:
$("#abc").validate({
focusCleanup: true,
focusInvalid: false,
rules: {t1: {required: true, email:true}, t2: {required: true,email:true}}
});
Run Code Online (Sandbox Code Playgroud)
我设置'focusInvalid:false',因为文档说应该避免组合focusCleanup和focusInvalid; 根据我的经验,评论出这条线并没有什么区别.
难道我做错了什么?
你所经历的是正确的行为,可能有点违反直觉. 您可以在此处的演示中查看代码.当你点击,你只注重文本框,但是当你标签你造成2个事件说事,你同时触发focusin 和 keyup.
因为你正在触发正在keyup发生的事情是它正在清除错误,但是因为你在它们的框中键入了某些东西(它没有将tab与任何其他键区分开来,比如字母)......但是它会重新评估该框是否对每个都有效keyup,显示与之前相同的错误,因为该选项卡对此没有任何影响...因为它没有添加任何文本.
如果要禁用onkeyup验证,它将停止这样做,如下所示:
$("#abc").validate({
focusCleanup: true,
rules: {t1: {required: true, email:true}, t2: {required: true,email:true}},
onkeyup: false,
});?
Run Code Online (Sandbox Code Playgroud)
为了比较,这是演示中的代码,因此您可以将其与上面的原始演示进行比较.