给定使用
Masked Input插件屏蔽的文本框,并通过Validation Plugin将其标记为必填字段,请考虑以下事项:
如果你将焦点放在一个被屏蔽的文本框中,然后保留它而不输入任何信息(或者不输入足够的信息来满足掩码),屏蔽输入插件将删除所有内容,留下一个空文本框.
$("#phoneNumber").mask("(999) 999-9999? x999999"); $("#sampleForm").validate({ rules: { phoneNumber: "required" } });
验证插件似乎在屏蔽输入插件之前触发了模糊事件.这导致文本框传递验证(因为它确实包含文本),然后屏蔽输入插件启动并删除文本.一旦失去焦点,该字段应标记为无效.
我尝试过使用正则表达式验证器.它接近,但是再次,因为它在被屏蔽的输入插件清理了字段之前触发它不应该显示错误(尽管当用户尝试提交表单时错误消失).
我也试过这个:
$('input').bind('unmasked.maskedInput',function () { $(this).valid(); });
这有效,但它也会干扰验证器的初始行为:在按下提交按钮之前不会验证字段,然后在失去焦点时验证它们.
我已经设置了一个描述我遇到的问题的jsFiddle.
解决方法
Hiya工作演示
http://jsfiddle.net/2hdTn/