我正在使用jQuery Validation 插件和qTip2 插件来显示错误。
我设置了两个 jsFiddles 来演示我遇到的一个奇怪的问题。前两个字段是“必需的”,第三个和第四个字段是“可选的”,而第三个字段是验证电话号码。
当我填写可选的电话号码字段时,我仍在验证电话号码,即使它不是必需的。但是,如果用户输入了无效号码(出现错误)、改变主意并退格电话号码字段,则错误消息应该会消失。
它在这里按预期工作(带有标准错误的验证插件(无 qTip2)):
jsFiddle #1:http: //jsfiddle.net/avJ54/2/
问题是它在使用 qTip2 显示错误时不起作用:
jsFiddle #2:http: //jsfiddle.net/WKryu/3/
在元素上,error
该类被正确删除并替换为valid
该类,但显然success
处理程序没有触发。但是,qTip2 依赖于success
触发处理程序以销毁任何错误气泡。
有两件事会迫使success
处理程序触发并清除此错误。
1)点击提交按钮。
2)填写“必填”字段并失去焦点。
所以问题是:当它们被空白时,我似乎无法让 qTip2 立即删除可选字段上的错误气泡,类似于它在第一个 jsFiddle 中的工作方式。
由于success
处理程序似乎只在失去“必需”字段的焦点时触发,有没有办法在失去任何字段的焦点时触发它?这将最容易解决问题。
编辑: 我alert()
在成功处理程序上放了一个,它仅在您失去任何已验证字段的焦点时触发。奇怪的是,尽管我使用了我的phone
方法,但只有在输入有效电话号码后失去焦点时才会触发成功处理程序。但是,从技术上讲,当该字段被空白并显示默认值时,它也是一个“有效”字段,但success
不会触发。换句话说,当清空字段并失去焦点时,类立即更改为.valid
但success
处理程序永远不会触发。这是最让我困惑的地方,也是我正在寻求解释的地方。
也许我关于但我还不能破译我需要做什么才能让这一切正常工作。success
处理程序不触发的假设是错误的,
线索?:只需删除默认字段值即可使其正常工作...
jsfiddle #3:http: //jsfiddle.net/BwNLs/
但是,这并不是我真正想要的(我需要默认字段值作为我设计的一部分)。显然,在 jsFiddle #1 中切换默认字段值不是问题......只有在引入 qTip2 时才会成为问题。
这是使用 qTip2 和默认字段值的某种组合,导致所有这些令人头疼的问题。希望你们中的一个人能看到我在哪里失明。