Подключение библиотеки Inputmask выполняется через подключение готового скрипта или установку через пакетный менеджер. В случае использования CDN достаточно добавить файл библиотеки перед основным кодом приложения:
<script src="https://cdn.jsdelivr.net/npm/inputmask@5.0.8/dist/inputmask.min.js"></script>
При установке через npm подключение осуществляется стандартным образом:
npm install inputmask
Далее библиотека импортируется в модуль:
import Inputmask from "inputmask";
Маска ввода представляет собой шаблон, который ограничивает допустимые символы в поле ввода. Каждый символ шаблона описывает правило: цифра, буква, обязательный или необязательный символ, фиксированное значение.
Простейшая маска применяется к HTML-элементу input и определяет формат вводимых данных.
Наиболее распространённый пример — телефонный номер фиксированного формата. Поле ввода должно принимать только цифры в заданной структуре:
<input id="phone" type="text" />
const phoneInput = document.getElementById("phone");
Inputmask("+7 (999) 999-99-99").mask(phoneInput);
В данном шаблоне используются следующие элементы:
+7 — фиксированный префикс, который всегда остаётся
неизменным9 — символ, обозначающий обязательную цифруКаждое появление 9 означает, что в этом месте
допускается ввод только числового символа.
При активации маски поле ввода начинает обрабатывать каждый введённый символ. Алгоритм работы включает:
При вводе первых цифр маска автоматически формирует строку вида:
+7 (123) 456-78-90
При этом пользователь вводит только числа, а форматирование происходит автоматически.
Маска может задаваться не только строкой, но и объектом конфигурации, что расширяет возможности управления поведением:
Inputmask({
mask: "+7 (999) 999-99-99"
}).mask(phoneInput);
Такой подход используется, когда требуется добавление дополнительных параметров, например управление очисткой или поведением при потере фокуса.
Один и тот же шаблон может применяться к нескольким элементам интерфейса. Это позволяет стандартизировать ввод данных в разных частях приложения:
const elements = document.querySelectorAll(".phone");
Inputmask("+7 (999) 999-99-99").mask(elements);
В этом случае маска навешивается сразу на коллекцию элементов, и каждый из них получает одинаковую логику обработки ввода.
В базовой конфигурации Inputmask используются основные символы:
9 — обязательная цифраa — обязательная буква* — любой символ (буква или цифра)Пример буквенной маски:
Inputmask("aaa-999").mask(document.getElementById("code"));
Такая маска требует ввод трёх букв, дефиса и трёх цифр.
При отсутствии введённых данных поле остаётся пустым или содержит маску-плейсхолдер в зависимости от настроек. Базовое поведение предполагает отсутствие сохранения незаполненных символов.
Маска не допускает частично некорректных значений, обеспечивая строгую структуру данных даже на этапе ввода.
При вставке строки из буфера обмена библиотека автоматически пытается привести значение к заданному шаблону. Например, при вставке номера без форматирования:
71234567890
результат преобразуется в:
+7 (123) 456-78-90
Если вставляемая строка содержит недопустимые символы, они игнорируются в соответствии с правилами маски.
Базовый режим работы может быть расширен через параметры, управляющие очисткой введённых данных. Один из ключевых параметров — сохранение или удаление маски при получении значения из input:
Inputmask({
mask: "+7 (999) 999-99-99",
clearMaskOnLostFocus: false
}).mask(phoneInput);
В этом случае значение остаётся отформатированным даже при потере фокуса.
Хотя в простом примере используется один шаблон, библиотека поддерживает набор альтернативных масок. Это позволяет одному полю принимать несколько форматов:
Inputmask({
mask: ["+7 (999) 999-99-99", "+7 999 999 9999"]
}).mask(phoneInput);
При вводе данных система автоматически подбирает подходящий формат.
Маска интегрируется с базовыми событиями браузера:
Каждое событие используется для поддержания корректного состояния поля без дополнительной ручной валидации.
Полный минимальный сценарий использования маски включает HTML и Jav * aScript:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<title>Inputmask пример</title>
<script src="https://cdn.jsdelivr.net/npm/inputmask@5.0.8/dist/inputmask.min.js"></script>
</head>
<body>
<input id="phone" type="text" />
<script>
const phoneInput = document.getElementById("phone");
Inputmask("+7 (999) 999-99-99").mask(phoneInput);
</script>
</body>
</html>
В этом примере создаётся поле ввода, к которому применяется маска телефона. После инициализации любое взаимодействие с полем ограничивается заданным форматом, а вводимые данные автоматически структурируются.