allowMinus и allowPlus

В числовых масках Inputmask обработка знаков числа реализуется через два ключевых параметра — allowMinus и allowPlus. Эти настройки определяют, допустим ли ввод отрицательных и положительных чисел с явным указанием знака, а также как именно библиотека интерпретирует символы - и + в процессе ввода.

Поведение знаков напрямую связано с режимом числового алиаса (alias: "numeric"), где Inputmask применяет строгую нормализацию ввода, контроль позиции символов и фильтрацию некорректных комбинаций.


Разрешение отрицательных чисел: allowMinus

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

Базовое поведение

При значении:

allowMinus: true

становится допустимым:

  • ввод -123
  • вставка значения -0.5
  • программная установка отрицательных значений

При этом Inputmask обеспечивает строгую нормализацию:

  • знак - допускается только в начале значения
  • повторный ввод минуса блокируется
  • минус не может находиться внутри числа

Если пользователь пытается ввести 12-3, символ игнорируется или перемещается в корректную позицию в зависимости от конфигурации поведения вставки.

Ограничение при выключенном allowMinus

При:

allowMinus: false

любая попытка ввода - блокируется полностью. Это распространяется как на ручной ввод, так и на вставку из буфера обмена.

Типичный эффект:

  • -123123
  • 12-3123
  • - → пустой ввод или игнорирование

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


Разрешение плюсового знака: allowPlus

Параметр allowPlus управляет возможностью явного указания положительного знака +.

Поведение при включении

allowPlus: true

становится допустимым ввод:

  • +123
  • +0.75

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

Особенности обработки:

  • + допускается только в начале строки
  • множественные плюсы (++123) блокируются
  • знак не может быть внутри числа

Поведение при выключении

При:

allowPlus: false

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

  • +123123
  • 12+3123
  • вставка строки с плюсом очищается от знака

Совместная работа allowMinus и allowPlus

Комбинация параметров определяет полный набор допустимых знаков:

allowMinus allowPlus Результат
false false только беззнаковые числа
true false только отрицательные допустимы
false true только положительные с явным +
true true полный набор: +123, -123, 123

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


Приоритет и нормализация знака

Inputmask применяет строгие правила обработки знака:

1. Единственный знак

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

2. Фиксация позиции

Знак всегда фиксируется перед первой значимой цифрой:

  • корректно: -45, +45
  • некорректно: 4-5, 4+5

3. Вставка из буфера

При вставке строки библиотека анализирует первый валидный знак:

  • "+12-3"+123
  • "-0.8"-0.8
  • "12-3"123 (если allowMinus выключен)

Взаимодействие с другими числовыми настройками

radixPoint и дробные числа

При использовании дробей (radixPoint: ".") знак применяется ко всему числу целиком:

  • -12.5
  • +0.75

Знак не влияет на дробную часть и не может быть применён отдельно к ней.


digits и ограничение точности

Настройка digits не изменяет поведение знаков, но влияет на итоговое форматирование:

  • -123.456 при digits: 2-123.45
  • знак сохраняется независимо от округления

rightAlign

При rightAlign: true знак визуально может отображаться слева от выровненного числа, но логически остаётся частью значения:

  • ввод: -12
  • отображение: знак фиксирован слева, число выровнено справа

Поведение при программной установке значения

При установке значения через API:

$(input).inputmask("setvalue", "-100");

Inputmask проверяет:

  • допустимость знака согласно allowMinus и allowPlus
  • корректность позиции
  • соответствие числовому алиасу

Если знак запрещён, он удаляется до применения маски.


Особенности обработки нуля и знака

Число 0 в комбинации со знаками обрабатывается как отдельный случай:

  • -0 допустимо при allowMinus: true
  • +0 допустимо при allowPlus: true

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


Валидационные ограничения

Система Inputmask предотвращает ряд некорректных состояний:

  • несколько знаков подряд
  • знак в середине числа
  • знак после разделителя дробной части
  • конфликт знака и пустого значения (например, один - без цифр может быть временно допустим в процессе ввода)

Поведение при удалении символов

При backspace и delete логика зависит от позиции курсора:

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

Практическая модель обработки значения

Логика обработки знаков в Inputmask можно представить как последовательность нормализации:

  1. Извлечение потенциального знака (+ или -)
  2. Проверка разрешений allowPlus / allowMinus
  3. Фиксация знака в начале строки
  4. Очистка лишних символов
  5. Применение числовых правил (дроби, разряды, лимиты)

Итоговая роль allowMinus и allowPlus в числовых масках

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