带有可选字符的jQuery Mask

时间:2018-11-15 13:02:45

标签: javascript jquery html jquery-mask

我一直在应用程序中使用jquery mask插件来屏蔽某些字段。工作正常。我必须屏蔽巴西格式的车牌(3个字母和4个数字,用-分隔),下面的代码始终可以正常工作:

$(".car-plate").mask("AAA-0000");

现在,我必须提供一种增加可选字母的新格式,它表示:AAAA-0000。我必须保持当前格式兼容。有时车牌可能是AAA-0000,有时是AAAA-0000。我已经尝试过了:

var carMaskBehavior = function (val) {    
  return val.replace(/\W/g, '').length === 8 ? 'AAAA-AAAA' : 'AAA-AAAA';
},      
spOptions = {
  onKeyPress: function(val, e, field, options) {
      field.mask(carMaskBehavior.apply({}, arguments), options);
    }
};

$('#car1').mask(carMaskBehavior, spOptions);

Jsbin:https://jsbin.com/zijayiwoxe/edit?html,js,console,output

我只尝试输入字母,但是当用户输入格式为AAA-9999AAAA-9999的文本时,我不知道如何解决此问题以定义掩码。我该怎么办?

谢谢。

1 个答案:

答案 0 :(得分:1)

只需动态更改遮罩并在最后允许一个可选的字符:

var spOptions = {
    onKeyPress: function(val, e, field, options) {
      var mask = "";

      if (val.length === 8) {
        mask = 'AAA-AAAAZ'
      } else {
        mask = 'AAAA-AAAA'
      }
      $('#car1').mask(mask, options);
    },
    translation: {
      'Z': {
        pattern: /[.]?/,
        optional: true
      }
    }
  };

  $('#car1').mask('AAA-AAAA', spOptions);

Working example