我有一个使用 jquery 验证的表单,并且该表单在提交和模糊(onfucusout)时进行验证。我的一些字段具有使用 jquery mask 插件的 mask 。当它成为焦点时, mask 将在字段 (---)---/---- 中放置类似的内容。当用户单击此字段之外时,(---)---/---- 消失。我的问题是,尽管该字段保留为黑色,但它会抛出验证错误,认为用户已输入 (---)---/---- 而不是将其留空。
我的第一个想法是延迟验证,以便在 (---)---/---- 消失后验证。我的问题是如何将验证设置为延迟,以便在字符消失后评估字段?如果这不是正确的解决方法,有人可以帮助我解决这个问题。
我再次认为这是因为验证是在掩码字符消失之前触发的。我需要它在蒙面占位符消失后进行验证。谢谢你的帮助。
最佳答案
我解决这个问题的方式。
在我的例子中输入掩码:“(999) 999-9999”
对于我的测试示例,我执行了以下操作:
(1) 我做的第一件事是确定在我的 DOM 中生成了哪些字符。 例如 在 FireBug 控制台中使用以下代码。
$('#MyPhoneNumberID').keydown(function(){ console.log($(this).val())
就我而言,它吐出以下内容 (_) -___
(2) 我使用的解决方法是更新我的正则表达式(针对手机)并将掩码包含在正则表达式中 例如“(_) -___”或允许正确输入电话号码。
使用的正则表达式: "^(?:+)?(1)?(?:\s*(?:-|.|()?\s*)?(\d{3}|_{3}|\s{3} )(?:\s*(?:-|.|))?\s*)?(\d{3}|_{3}|\s{3})(?:\s*(?:- |.)?\s*)?(\d{4}|_{4}|\s{4})$"
希望这有帮助!
关于javascript - Jquery 验证 - 输入掩码冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9368806/