【问题标题】:Jquery Validate - Input Mask ConflictJquery Validate - 输入掩码冲突
【发布时间】:2012-02-20 21:39:43
【问题描述】:
我有一个使用 jquery validate 的表单,该表单在提交和模糊 (onfucusout) 时验证。我的一些字段使用 jquery 掩码插件具有掩码。当它成为焦点时,掩码将在字段 (---)---/---- 中放置类似的内容。当用户点击该字段时,(---)---/---- 消失。我的问题是,虽然该字段是黑色的,但它会抛出验证错误,认为用户输入了 (---)---/---- 而不是只将其留空。
我的第一个想法是延迟验证,以便在 (---)---/---- 消失后验证。我的问题是如何将验证设置为延迟,以便在字符消失后评估字段?如果这不是正确的解决方法,有人可以帮我解决这个问题。
我再次认为这是因为验证在掩码字符消失之前触发。在蒙面占位符消失后,我需要它来验证。谢谢你的帮助。
【问题讨论】:
标签:
javascript
jquery
validation
mask
【解决方案1】:
我解决这个问题的方式。
在我的例子中输入掩码: "(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})$"
希望这会有所帮助!