В библиотеке Inputmask алиасы представляют собой предустановленные конфигурации масок, инкапсулирующие типовые сценарии ввода данных. Алиас заменяет необходимость ручной сборки сложной маски, объединяя правила форматирования, проверки и поведения курсора в единую именованную сущность.
Алиасы применяются через параметр alias при
инициализации маски:
Inputmask({
alias: "email"
}).mask(inputElement);
Либо через data-атрибут:
<input data-inputmask="'alias': 'email'" />
Основная идея заключается в том, что алиас задаёт высокоуровневый тип данных, а внутренняя реализация преобразует его в набор правил Inputmask.
Каждый алиас в Inputmask — это объект конфигурации, зарегистрированный в системе alias definitions. Он содержит:
Алиасы могут наследовать друг друга. Это позволяет создавать сложные композиции на основе базовых типов.
Пример концептуального наследования:
Inputmask.extendAliases({
"custom-phone": {
alias: "phone",
countryCode: "+7",
mask: "+7 (999) 999-99-99"
}
});
Алиас phone предназначен для ввода телефонных номеров с
поддержкой различных национальных форматов.
Основные свойства:
Пример использования:
Inputmask({
alias: "phone"
}).mask(document.querySelector("#phone"));
Расширенная конфигурация:
Inputmask({
alias: "phone",
countryCode: "+1",
keepStatic: true
}).mask(input);
Поведение алиаса включает автоматическое форматирование при вводе и очистку некорректных символов.
Алиас email реализует проверку структуры электронного
адреса на уровне ввода. Он не ограничивается простым регулярным
выражением, а использует поэтапную проверку локальной и доменной
частей.
Ключевые особенности:
@;Пример:
Inputmask({
alias: "email"
}).mask(emailInput);
Внутренняя логика разбивает ввод на сегменты:
@;Каждый сегмент валидируется отдельно.
Алиас numeric используется для числового ввода с
поддержкой форматов:
Пример базовой настройки:
Inputmask({
alias: "numeric"
}).mask(input);
Расширенная конфигурация:
Inputmask({
alias: "numeric",
groupSeparator: " ",
radixPoint: ",",
digits: 2,
allowMinus: true
}).mask(input);
Внутреннее поведение включает:
Алиас currency расширяет numeric, добавляя
поддержку денежных форматов. Основная задача — представление чисел в
финансовом виде с учётом локализации.
Особенности:
Пример:
Inputmask({
alias: "currency",
prefix: "$ ",
digits: 2,
groupSeparator: ","
}).mask(input);
Поведение включает автоматическое выравнивание значения при потере фокуса и восстановление структуры при повторном вводе.
Алиас datetime предназначен для ввода даты и времени с
контролем формата и валидностью календарных значений.
Поддерживаются форматы:
Пример:
Inputmask({
alias: "datetime",
inputFormat: "yyyy-mm-dd HH:MM"
}).mask(input);
Основные механизмы:
При вводе происходит сегментирование строки и независимая обработка каждой части.
Алиас decimal специализируется на числах с плавающей
точкой, отличаясь от numeric более строгой обработкой
дробной части.
Характеристики:
Пример:
Inputmask({
alias: "decimal",
digits: 3,
radixPoint: "."
}).mask(input);
Механизм работы:
Алиас ip используется для ввода IP-адресов (IPv4 и
частично IPv6 в расширенных конфигурациях).
Пример IPv4:
Inputmask({
alias: "ip"
}).mask(input);
Логика:
Каждый октет обрабатывается отдельно, что позволяет предотвращать ввод невалидных адресов на этапе набора.
Алиас mac применяется для MAC-адресов сетевых
устройств.
Пример:
Inputmask({
alias: "mac"
}).mask(input);
Особенности:
: и -;Некоторые алиасы выступают как надстройка над базовой маской, добавляя поведенческие слои.
Пример расширенного алиаса:
Inputmask.extendAliases({
"zip-extended": {
mask: "99999[-9999]",
greedy: false
}
});
Здесь алиас не только задаёт шаблон, но и управляет динамическими сегментами, которые активируются при необходимости.
При наличии нескольких уровней конфигурации действует следующая иерархия:
Inputmask({...});Переопределение алиаса возможно через extendAliases:
Inputmask.extendAliases({
email: {
greedy: false,
clearIncomplete: true
}
});
Изменённые алиасы начинают использоваться во всех новых экземплярах маски.
Алиасы не изолированы от дополнительных параметров. Поведение может быть модифицировано внешними настройками:
Inputmask({
alias: "numeric",
rightAlign: false,
clearMaskOnLostFocus: true
}).mask(input);
Такая комбинация позволяет адаптировать стандартный алиас под конкретные требования интерфейса без изменения его базовой логики.
При инициализации Inputmask выполняется:
Этот процесс обеспечивает одинаковое поведение алиасов независимо от способа их подключения.
Алиасы содержат встроенные правила обработки paste-событий:
Например, при вставке строки даты в datetime выполняется
автоматическое разбиение по разделителям и корректировка значений.
Создание кастомных алиасов основывается на расширении существующих:
Inputmask.extendAliases({
"ru-phone": {
alias: "phone",
mask: "+7 (999) 999-99-99",
countryCode: "+7"
}
});
Такая структура позволяет формировать библиотеку доменных масок для конкретных проектов, сохраняя совместимость с ядром Inputmask.