Целые числа

Базовая концепция числового ввода

В библиотеке Inputmask работа с целыми числами строится вокруг ограничения вводимых символов исключительно цифровым набором с дополнительным контролем над знаками, группировкой разрядов и правилами нормализации значения. Основной задачей такого режима является исключение любых нечисловых символов и приведение пользовательского ввода к строго формализованному виду, пригодному для последующей обработки в логике приложения или отправки на сервер.

Для целых чисел применяется специализированный алиас integer, который представляет собой преднастроенную конфигурацию маски, ориентированную на ввод целых значений без дробной части.

Inputmask("integer").mask(document.querySelector("input"));

Данный режим автоматически ограничивает ввод символами 0–9, блокируя любые другие типы данных, включая буквы, пробелы и разделители, не относящиеся к целым числам.


Алиас integer и его внутренняя структура

Алиас integer в Inputmask является конфигурационной обёрткой над базовыми правилами цифровой маски. Его поведение эквивалентно набору параметров, определяющих допустимые символы, правила группировки и обработку знака числа.

Типичная структура включает:

  • ограничение ввода только цифрами;
  • поддержку отрицательных значений (опционально);
  • управление разделителями тысяч;
  • контроль очистки маски при потере фокуса;
  • управление форматированием отображаемого значения.
Inputmask({
  alias: "integer"
}).mask(input);

Использование алиаса предпочтительнее ручной конфигурации при стандартных сценариях ввода чисел, поскольку снижает вероятность ошибок при настройке параметров.


Ограничение диапазона значений

При работе с целыми числами часто требуется ограничить допустимый диапазон. Inputmask предоставляет параметры min и max, которые задают нижнюю и верхнюю границы значения.

Inputmask({
  alias: "integer",
  min: 0,
  max: 1000
}).mask(input);

Механизм контроля диапазона работает на уровне валидации введённого значения, предотвращая выход за пределы допустимого интервала. При этом ввод символов не блокируется мгновенно на уровне каждого нажатия клавиши, а корректируется при завершении ввода или потере фокуса, в зависимости от конфигурации.


Работа с отрицательными числами

Поддержка отрицательных значений регулируется параметром allowMinus. Включение этого параметра позволяет использовать символ минуса в начале числа.

Inputmask({
  alias: "integer",
  allowMinus: true
}).mask(input);

При отключённом режиме любые попытки ввода знака - игнорируются, а значение принудительно приводится к положительному числу.

Поведение маски при работе с отрицательными значениями включает:

  • разрешение минуса только в первой позиции;
  • запрет повторного использования знака;
  • автоматическую нормализацию при вставке строки.

Группировка разрядов

Для повышения читаемости больших чисел используется группировка разрядов. В Inputmask это реализуется через параметры autoGroup и groupSeparator.

Inputmask({
  alias: "integer",
  autoGroup: true,
  groupSeparator: " "
}).mask(input);

При включённой группировке число 1000000 может отображаться как 1 000 000. При этом внутреннее значение остаётся чисто числовым, без разделителей.

Группировка применяется только к визуальному представлению и не влияет на исходные данные при извлечении значения через API библиотеки.


Управление форматированием и выравниванием

Поведение отображения чисел в поле ввода регулируется параметром rightAlign. Для числовых значений часто используется выравнивание по правому краю, имитирующее поведение калькуляторов и финансовых интерфейсов.

Inputmask({
  alias: "integer",
  rightAlign: true
}).mask(input);

Выравнивание влияет исключительно на визуальную сторону и не изменяет порядок символов в модели данных.

Дополнительно может использоваться параметр clearMaskOnLostFocus, который определяет, будет ли поле очищаться при потере фокуса, если значение неполное или некорректное.


Поведение при вводе и вставке данных

Inputmask обрабатывает не только посимвольный ввод, но и вставку строк. При использовании алиаса integer любые вставляемые данные проходят фильтрацию:

  • удаляются все нецифровые символы;
  • сохраняется знак минуса при включённой поддержке отрицательных чисел;
  • игнорируются пробелы и разделители;
  • корректируется порядок символов при необходимости.

Вставка строки abc-12 34xyz преобразуется в -1234 при включённом allowMinus.


Маска на основе шаблона для целых чисел

Помимо алиаса integer, целые числа могут задаваться через низкоуровневые маски с использованием цифровых токенов. Символ 9 обозначает обязательную цифру, а # может использоваться для необязательных позиций в зависимости от конфигурации.

Inputmask("9{1,10}").mask(input);

Такой подход задаёт ограничение на длину числа, например от 1 до 10 цифр. Подобная конфигурация применяется в случаях, когда требуется строгий контроль длины идентификаторов или кодов.


Очистка и нормализация значения

Внутреннее значение Inputmask отличается от отображаемого. Для извлечения «чистого» числа используется параметр unmaskAsNumber или методы получения unmasked value.

const value = input.inputmask.unmaskedvalue();

При этом:

  • разделители тысяч удаляются;
  • форматирование игнорируется;
  • возвращается строковое или числовое представление в зависимости от конфигурации.

Нормализация обеспечивает единообразие данных при передаче в бизнес-логику.


Особенности валидации целых чисел

Валидация в режиме integer основана на нескольких уровнях контроля:

  1. синтаксический контроль вводимых символов;
  2. структурная проверка расположения знака минус;
  3. проверка соответствия диапазону (min, max);
  4. постобработка при завершении ввода.

Функция проверки корректности может использоваться через встроенные механизмы Inputmask, обеспечивающие определение завершённости и валидности значения.


Интеграция с формами и внешними валидаторами

Маска целых чисел часто используется совместно с HTML-формами и внешними библиотеками валидации. В таких сценариях Inputmask отвечает исключительно за формат ввода, тогда как бизнес-валидация выполняется отдельно.

При отправке формы важно учитывать, что отображаемое значение может содержать форматирование, тогда как фактическое значение должно извлекаться через unmask-методы.


Поведение при фокусе и blur-событиях

Работа маски тесно связана с событиями ввода:

  • при фокусе активируется режим обработки символов;
  • при вводе происходит поэтапная фильтрация;
  • при потере фокуса выполняется финальная нормализация.

Эти механизмы обеспечивают согласованность данных независимо от способа ввода — клавиатура, вставка или автозаполнение браузера.


Использование в высоконагруженных формах

В интерфейсах с большим количеством числовых полей Inputmask с алиасом integer обеспечивает унифицированную обработку данных. Поведение маски остаётся стабильным при массовом применении, поскольку логика ограничивается простыми операциями фильтрации символов и форматирования.

Особое значение имеет минимизация побочных эффектов при обновлении DOM, так как маска не изменяет структуру элемента, а работает поверх событийной модели ввода.