2010-06-24 19 views
10

我有一个屏蔽zip字段的要求,以便它允许传统的5位数字zip(XXXXX)或5 + 4格式(XXXXX-XXXX)。多种格式的jQuery zip掩码

我会这么像:

$('#myZipField').mask("?99999-9999"); 

但并发症来自于一个事实,如果用户将只有5位数字仪表板不应该显示。

这是迄今为止最好的 - 我可以扩展它来自动插入短划线,当他们插入第6位数字,但问题与这将是有趣的行为删除(我可以阻止他们删除冲但它会修补补丁等等,它变成了一场噩梦):

$.mask.definitions['~']='[-]'; 
$("#myZipField").mask("?99999~9999", {placeholder:""}); 

是否有任何出这样的盒子的方式还是我不得不推出自己的?

+1

我有同样的问题,你有没有曾经想出一个合适的解决方案?谢谢! – 2012-01-11 15:56:12

+1

@BenL。不是真的 - 我最终分裂了多个文本框中的字段 – JohnIdol 2012-11-14 16:34:25

+0

这可能有所帮助:https://igorescobar.github.io/jQuery-Mask-Plugin/ – 2017-06-22 15:59:37

回答

9

你不必使用不同的插件。只是移动的问号,使代替:

$('#myZipField').mask("?99999-9999"); 

你应该使用:

$('#myZipField').mask("99999?-9999"); 

毕竟,这是不是整个字符串是可选的,只是-从不间断。

-1

为什么不让这个字段透明,并且在它后面有一个文本对象,其格式为浅灰色?所以他们在背景中看到####### - ####,然后使用它来使字母消失。在那一点上,它表明如果他们想要多出四个,他们应该输入一个破折号,对吧?那么,你可以使用脚本来自动插入连字符,如果他们搞砸和6型数字?

0

这邮政编码其实很简单,但是当你有处理更复杂的格式,这里是它是如何与插件(从demo page)解决:

var options = {onKeyPress: function(cep, e, field, options){ 
    var masks = ['00000-000', '0-00-00-00']; 
    mask = (cep.length>7) ? masks[1] : masks[0]; 
    $('.crazy_cep').mask(mask, options); 
}}; 

$('.crazy_cep').mask('00000-000', options);