13

我有屏蔽 zip 字段的要求,以便它允许经典的 5 位数 zip (XXXXX) 或 5 + 4 格式 (XXXXX-XXXX)。

我可以这样:

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

但复杂性来自这样一个事实,即如果用户只输入 5 位数字,则不应显示破折号。

这是迄今为止我想出的最好的方法-我可以将其扩展为在他们插入第 6 个数字时自动插入破折号,但这样做的问题是删除时的有趣行为(我可以阻止他们删除破折号,但它会修补补丁等等,它变成了一场噩梦):

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

是否有任何开箱即用的方法可以做到这一点,还是我必须自己动手?

4

5 回答 5

11

您不必使用其他插件。只需移动问号,而不是:

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

你应该使用:

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

毕竟,不是整个字符串都是可选的,只是 the -and onward。

于 2012-11-09T20:16:54.447 回答
1

这个邮政编码实际上很简单,但是当您有更复杂的格式要处理时,这是使用插件解决的方法(来自演示页面):

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);
于 2016-06-20T08:01:56.360 回答
0

如果您已经在使用 jQuery,可能有数百个用于掩码等的插件,例如: http ://www.meiocodigo.com/projects/meiomask/

所以我认为你不必自己动手

于 2010-06-28T13:22:29.713 回答
0

当您使用 jQuery Inputmask 插件并且您想使用 4 或 5 位数字值作为邮政编码时,您应该使用:

$('#myZipField').inputmask("9999[9]");

于 2020-08-04T18:05:34.613 回答
-1

为什么不让该字段是透明的,并在其后面有一个文本对象,表格为浅灰色?所以他们会在背景中看到#######-####,然后对其进行装配,以便在他们键入时字母消失。在那一点上,如果他们想放额外的四个,就应该输入一个破折号,对吧?然后,如果他们搞砸并输入 6 个数字,您可以操纵脚本自动插入连字符?

于 2010-06-28T03:48:34.920 回答