Числовые маски в Inputmask представляют собой специализированный
набор правил форматирования, предназначенный для обработки числовых
значений: целых чисел, дробей, денежных сумм, значений с разделителями
разрядов и ограничениями диапазонов. Основой реализации выступает алиас
numeric, который объединяет поведение, связанное с
нормализацией ввода, форматированием и валидацией чисел в режиме
реального времени.
Алиас numeric активирует набор предустановленных
параметров, определяющих поведение числового поля:
Простейшая инициализация:
Inputmask("numeric").mask(inputElement);
При этом ввод автоматически ограничивается числовыми символами с учётом конфигурации локали и внутренних настроек библиотеки.
Для целых чисел используется алиас integer, который
исключает дробную часть и ограничивает ввод только целыми
значениями.
Inputmask("integer").mask(inputElement);
Поведение включает:
Ключевые параметры:
allowMinus — разрешение отрицательных чисел;rightAlign — выравнивание значения по правому
краю;groupSeparator — символ группировки разрядов.Пример расширенной конфигурации:
Inputmask("integer", {
allowMinus: true,
rightAlign: false,
groupSeparator: " ",
autoGroup: true
}).mask(inputElement);
Для работы с дробными значениями используется алиас
decimal. Он обеспечивает поддержку разделителя дробной
части и контроль количества знаков после запятой.
Inputmask("decimal").mask(inputElement);
Основные параметры:
digits — фиксированное количество знаков после
разделителя;digitsOptional — делает дробную часть
необязательной;radixPoint — символ разделителя дробной части;autoGroup — автоматическая группировка разрядов.Пример фиксированной точности:
Inputmask("decimal", {
digits: 2,
radixPoint: "."
}).mask(inputElement);
При такой конфигурации значение нормализуется до двух знаков после точки.
Числовые маски поддерживают форматирование больших чисел с
использованием разделителей тысяч. Это реализуется через комбинацию
параметров groupSeparator и autoGroup.
Inputmask("numeric", {
autoGroup: true,
groupSeparator: ",",
digits: 0
}).mask(inputElement);
При вводе число автоматически преобразуется в формат с разделением разрядов:
Дополнительно используется параметр groupSize,
определяющий размер группы разрядов:
Inputmask("numeric", {
autoGroup: true,
groupSeparator: " ",
groupSize: 3
}).mask(inputElement);
Поддержка отрицательных чисел контролируется параметром
allowMinus. При включении допускается ввод символа
-.
Inputmask("decimal", {
allowMinus: true
}).mask(inputElement);
Дополнительно учитываются следующие аспекты:
Числовые маски позволяют задавать допустимые границы с помощью
параметров min и max. Это обеспечивает не
только форматирование, но и базовую валидацию.
Inputmask("numeric", {
min: 0,
max: 100
}).mask(inputElement);
Поведение при выходе за пределы:
greedy и
enforceMinMax.Параметр radixPoint определяет символ, используемый для
отделения дробной части:
Inputmask("decimal", {
radixPoint: ","
}).mask(inputElement);
Поддерживаются различные локали, где разделитель может быть:
.);,);Синхронизация с вводом пользователя обеспечивает автоматическую замену неподходящих символов.
Параметр digitsOptional изменяет строгость контроля
дробной части. При включении допускается ввод целого числа без
обязательного указания дробного компонента.
Inputmask("decimal", {
digits: 2,
digitsOptional: true
}).mask(inputElement);
Поведение:
10 остаётся допустимым;10.5 нормализуется до 10.50;Параметр rightAlign влияет на позиционирование значения
внутри поля ввода.
Inputmask("numeric", {
rightAlign: false
}).mask(inputElement);
Варианты:
true — значение визуально прижато к правому краю;false — стандартное левое выравнивание.Правое выравнивание часто используется в финансовых формах, где важна визуальная сопоставимость разрядов.
Числовые маски часто применяются для денежных значений, где комбинируются:
Пример конфигурации:
Inputmask("decimal", {
digits: 2,
groupSeparator: " ",
autoGroup: true,
radixPoint: "."
}).mask(inputElement);
Символ валюты обычно добавляется через внешний шаблон интерфейса, а не через саму маску, чтобы избежать конфликтов с парсингом числа.
Числовые маски реализуют постсимвольную нормализацию:
В процессе ввода значение может временно находиться в промежуточном состоянии, но при завершении редактирования приводится к каноническому виду.
Пустые значения и нули имеют отдельную семантику:
null или
"";0 сохраняется как валидное числовое
значение;clearMaskOnLostFocus.Пример:
Inputmask("numeric", {
clearMaskOnLostFocus: true
}).mask(inputElement);
Числовые маски используют пошаговую проверку ввода:
digits,
min, max;Такая модель обеспечивает согласованность между вводом и итоговым значением без необходимости внешней валидации на каждом шаге.
На практике числовые маски формируются комбинацией нескольких настроек:
Inputmask("decimal", {
digits: 3,
digitsOptional: true,
allowMinus: true,
groupSeparator: ",",
autoGroup: true,
radixPoint: ".",
rightAlign: false,
min: -1000,
max: 1000
}).mask(inputElement);
Подобная конфигурация охватывает:
При установке значения через код выполняется повторная обработка маски:
inputElement.inputmask.setValue("12345.6");
Числовые маски учитывают региональные особенности:
Для сложных интерфейсов часто применяется ручная настройка
radixPoint и groupSeparator, чтобы исключить
неоднозначность между локалями.