1

我一直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. 我怎样才能做到这一点?

谢谢你。

4

1 回答 1

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

工作示例

于 2018-11-15T13:14:03.887 回答