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-9999 или же AAAA-9999, Как я могу это сделать?

Спасибо.

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

Рабочий пример

Другие вопросы по тегам