jQuery Mask с дополнительным символом - PullRequest
0 голосов
/ 15 ноября 2018

Я использовал плагин 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 Ответ

0 голосов
/ 15 ноября 2018

Просто измените маску на лету и дайте дополнительный символ до конца:

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

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

...