Tag: maskedinput

jQueryvalidation和屏蔽输入之间的冲突

我有一个表格,它使用jQuery Validate和Masked Input作为电话号码和美国邮政编码字段。 例如,对于美国邮政编码,屏蔽输入仅允许输入数字,并强制格式为“99999”或“99999-9999”(其中9可以是任意数字)。 validation规则要求相同。 但在某些情况下,Validate会在字段实际有效时将其标记为无效。 代码细节 jQuery Validate在邮政编码字段中使用的正则表达式是^\d{5}$|^\d{5}\-\d{4}$ 。 我使用蒙面输入的掩码是.mask(‘99999?-9999′) 重现步骤 当我执行以下操作时,会产生它们之间的冲突: 填写无效的邮政编码(比方说,三位数) 远离田野。 Masked Input擦除输入(预期行为),jQuery Validate将其标记为无效,因为它是空白的(也是预期的)。 返回邮政编码区并填写有效的5位数邮政编码。 远离田野。 它仍被标记为无效。 这是出乎意料的 。 如果我填写一个9位数的邮编,则不会发生此问题。 假设 我认为这个错误是因为在5位数字拉链的情况下,蒙面输入已暂时插入“-____”以向用户显示他们可以选择输入短划线和另外4位数字。 这在模糊时被删除,但在删除之前,该字段已经过validation并失败,因为不允许使用下划线。 该假设得到以下事实的支持:如果随后重新validation表单,则zip字段将通过。 我这样做了两个方面: 提交表格; 单击提交按钮,zip字段通过,表单提交时,将重新validation所有字段。 通过设置重新validation该特定字段的blur事件。 例如: $(“#zipcode”)。blur(function(){$(this).closest(’form’)。validate()。element($(this));}); 这可以作为一个hacky解决方案 ,但不是很令人满意,因为1)默认设置已经重新validation模糊,所以这是重复的,2)它需要额外的代码,除了正常的validation规则。 还有其他人遇到过这个问题吗? 您是否拥有比设置其他模糊事件监听器更优雅的解决方案 ? 更新:应用hacky解决方案 即使应用上面的hacky解决方案也不如我想的那样好用。 例如,这不起作用: $appDiv.delegate(‘input,select,textarea’,’blur’,function(){ $(this).closest(‘form’).validate().element($(this)); }); ……也不是这样的: $(‘input,select,textarea’).live(‘blur’,function(){ $(this).closest(‘form’).validate().element($(this)); }); ……但是这样做: $(‘input,select,textarea’).each(function(){ $(this).blur(function(){ $(this).closest(‘form’).validate().element($(this)); }); }); […]

带有jQuery和Masked Input Plugin的手机屏幕

我有一个问题,用jQuery和Masked Input Plugin屏蔽手机输入。 有两种可能的格式: (XX)XXXX-XXXX (XX)XXXXX-XXXX 有没有办法掩盖它接受这两种情况? 编辑: 我试过了: $(“#phone”).mask(“(99) 9999-9999”); $(“#telf1”).mask(“(99) 9999*-9999”); $(“#telf1”).mask(“(99) 9999?-9999”); 但它并不像我想的那样有效。 最接近的是(xx)x​​xxx-xxxxx。 我输入(xx)x​​xxx-xxxx时输入第10个数字,而(xx)x​​xxxx-xxxx输入第11个数字时。 它可以吗?