【发布时间】:2012-04-28 18:44:31
【问题描述】:
给定一个使用 Masked Input 插件屏蔽并被验证插件标记为必填字段的文本框,请考虑以下事项:
如果你把焦点放在一个被屏蔽的文本框中,然后不输入任何信息就离开(或者没有输入足够的信息来满足屏蔽),被屏蔽的输入插件将删除所有内容,留下一个空白文本框。
$("#phoneNumber").mask("(999) 999-9999? x999999");
$("#sampleForm").validate({
rules: {
phoneNumber: "required"
}
});
验证插件似乎在 屏蔽输入插件之前触发了它的 blur 事件。这会导致文本框通过验证(因为它确实有文本),然后被屏蔽的输入插件启动并删除文本。字段失去焦点后应立即标记为无效。
我尝试过使用正则表达式验证器。它接近了,但又一次,因为它在被屏蔽的输入插件清理字段之前触发,它在不应该显示错误时显示错误(尽管当用户尝试提交表单时错误消失)。
我也试过这个:
$('input').bind('unmasked.maskedInput', function () { $(this).valid(); });
这可行,但它也会干扰验证器的初始行为:在按下提交按钮之前不会验证字段,然后在失去焦点时验证它们。
我设置了一个jsFiddle,描述了我遇到的问题。
【问题讨论】:
标签: jquery jquery-validate maskedinput