Mask
Плагин Mask позволяет автоматически форматировать поле ввода текста по мере его набора пользователем.
Это удобно для различных типов входов: номера телефонов, кредитных карт, суммы в долларах, номера счетов, даты и т. д.
Установка
Вы можете использовать этот плагин, включив его из тега <script>
или установив с помощью менеджера пакетов.
Через CDN
Вы можете подключить CDN-сборку этого плагина с помощью тега <script>
, только подключать нужно ДО основного JS-файла Alpine.
Через менеджер пакетов
Вы можете установить Mask для использования внутри вашей сборки следующим образом:
Затем инициализируйте его в своей сборке:
x-mask
Основным API для использования этого плагина является директива x-mask
.
Для начала рассмотрим следующий простой пример поля даты:
Обратите внимание, что текст, вводимый в поле ввода, должен соответствовать формату, задаваемому x-mask
. Помимо принудительного ввода числовых символов, автоматически добавляются прямые косые черты /
, если пользователь не ввел их первым.
В масках поддерживаются следующие символы подстановки:
Знак подстановки | Описание |
---|---|
* | Любой символ |
a | Только буквенные символы (a-z, A-Z) |
9 | Только цифровые символы (0-9) |
Динамические маски
Иногда простых литералов масок (т. е. (999) 999-9999
) недостаточно. В этих случаях x-mask:dynamic
позволяет динамически генерировать маски «на лету» на основе пользовательского ввода.
Вот пример ввода данных о кредитной карте, который должен менять маску в зависимости от того, начинается ли номер с цифры «34» или «37» (что означает, что это карта Amex и, следовательно, имеет другой формат).
Как видно из приведённого примера, каждый раз, когда пользователь вводит значение input, это значение передается в выражение как $input
. В зависимости от $input
в поле используется та или иная маска.
Попробуйте сами, набрав число, начинающееся с «34» и число, которое не начинается.
x-mask:dynamic
также принимает функцию в качестве результата выражения и автоматически передает ей $input
в качестве первого параметра. Например:
Ввод денежных сумм
Поскольку написание собственного динамического выражения маски для ввода денежных сумм достаточно сложно, Alpine предлагает готовый вариант и предоставляет его в виде $money()
.
Здесь представлена полностью функционирующая маска ввода денежных сумм:
Если необходимо поменять точки на запятые и наоборот (как это требуется в некоторых валютах), то это можно сделать с помощью второго необязательного параметра:
Вы также можете переопределить разделитель тысяч, указав третий необязательный аргумент:
Для отмены точности по умолчанию, равную 2 цифрам, используйте в качестве четвертого необязательного аргумента любое желаемое количество цифр:
Проверка знаний
-
С помощью какого модификатора задаётся динамическая маска?
-
Как указать сумму с запятой вместо точки?