маска ввода для регистрационного номера британской компании - PullRequest
0 голосов
/ 05 июня 2018

Регистрационный номер британской компании для Англии и Уэльса состоит из 8 целых чисел.Для Шотландии это «SC», за которым следуют 6 целых чисел, а для Северной Ирландии это «NI», за которым следуют 6 целых чисел.Документация по маске ввода исчерпывающая, см. http://github.com/RobinHerbots/jquery.inputmask.. И самое простое решение:

$("input.CompanyFormat").inputmask("**999999",  "placeholder": "", "casing": "upper" });

Но это не лучшее решение.Пользователь должен иметь возможность вводить только «SC», «NI» или 2 цифры, а затем 6 цифр.

1 Ответ

0 голосов
/ 05 июня 2018

Существует проблема с подходом регулярных выражений, общим для всех масок ввода: одиночный ввод символа полностью не знает контекста.Вы можете определить специальный шаблон только для одного ввода символов, например, если вы хотите, чтобы первый символ был S, вы можете определить его внутри definitions, но он не будет знать, что последует за ним или что предшествует ему,

Таким образом, вы не можете определить шаблон с несколькими символами для символа подстановки, и вам необходимо использовать дополнительный механизм проверки вместе с маской.

Например, вы можете использовать входную проверку HTML5 patternсообщить пользователю, что шаблон недействителен:

<input type="text" pattern="(SC|NI|[0-9]{2})[0-9]{6}" title="Wrong input!">

См. демонстрационный пример HTML5:

<form name="form1"> 
 <input pattern="(SC|NI|[0-9]{2})[0-9]{6}" title="Wrong input!" />
 <input type="Submit"/> 
</form>

pattern="(SC|NI|[0-9]{2})[0-9]{6}" (он будет скомпилирован как /^(?:(SC|NI|[0-9]{2})[0-9]{6})$/ с модификатором u в FF и Chrome) будет соответствовать любому входу, который соответствует

  • ^ - начало строки (неявное)
  • (SC|NI|[0-9]{2}) - SC, NI или 2 цифры
  • [0-9]{6} - 6 цифр
  • $ - конец строки (неявный).
...