问题 用于多种格式的jQuery zip掩码


我有一个屏蔽zip字段的要求,因此它允许使用经典的5位数字zip(XXXXX)或5 + 4格式(XXXXX-XXXX)。

我可以这样:

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

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

这是我到目前为止所提出的最好的 - 我可以将它扩展为在插入第6位时自动插入短划线但是这个问题在删除时会很有趣(我可以阻止他们删除短划线但是它会修补补丁等等,它变成了一场噩梦):

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

是否有开箱即用的方式或我必须自己滚动?


2797
2018-06-24 14:33


起源

我有同样的问题,你有没有想出一个合适的解决方案?谢谢! - Ben L.
@BenL。不是真的 - 我最终在多个文本框中拆分字段 - JohnIdol
这可能有所帮助: igorescobar.github.io/jQuery-Mask-Plugin - shasi kanth


答案:


您不必使用其他插件。只需移动问号,即可代替:

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

你应该使用:

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

毕竟,它不是整个字符串是可选的,只是 - 然后继续


10
2017-11-09 20:16





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

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


1
2018-06-28 13:22





这个邮政编码实际上很简单,但是当你有一个更复杂的格式来处理时,这就是它如何通过插件解决(来自 演示页面):

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);

1
2018-06-20 08:01





为什么不让字段透明,并在其后面有一个文本对象,表单为浅灰色?所以他们在背景中看到了####### - ####,然后对它进行装配,以便字母在输入时消失。那时,它表明如果他们想要加上额外的四个,他们应该进入破折号,对吧?那么,如果它们陷入困境并键入6个数字,您可以直接将脚本设置为自动插入连字符?


-1
2018-06-28 03:48