minimumValue

Параметр minimumValue в AutoNumeric задаёт нижнюю границу допустимого числового значения для поля ввода. Он определяет, какое минимальное число может быть введено, преобразовано или установлено через API библиотеки. Любое значение, выходящее ниже заданного порога, либо блокируется, либо приводится к допустимому минимуму в зависимости от режима работы экземпляра.

Логическая роль ограничения минимального значения

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

Минимальное значение влияет на все основные сценарии:

  • ввод символов пользователем
  • вставка значений из буфера обмена
  • программная установка значения через API
  • изменение значения колесом мыши или стрелками клавиатуры
  • автокоррекция при потере фокуса

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

Формат задания minimumValue

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

  • строковое представление числа '0', '-100', '0.00', '-9999.99'
  • числовое значение 0, -100, -9999.99
  • специальные значения (в некоторых конфигурациях AutoNumeric) "-Infinity" или "negInfinity" для отключения нижней границы

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

Поведение при нарушении ограничения

Если значение, установленное в поле, становится меньше minimumValue, AutoNumeric применяет одну из стратегий:

  • клампинг (clamping) — значение автоматически поднимается до minimumValue
  • отклонение ввода — вводимый символ игнорируется
  • коррекция при blur — значение исправляется при потере фокуса
  • программная нормализация — при set() значение приводится к допустимому диапазону

Конкретное поведение зависит от комбинации настроек, включая правила обработки событий и режим валидации.

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

minimumValue всегда рассматривается в паре с maximumValue. Вместе они формируют замкнутый диапазон допустимых значений.

Диапазон можно представить как:

[minValue, maxValue]

Если minimumValue больше maximumValue, поведение становится неопределённым и зависит от внутренней нормализации конфигурации. В большинстве случаев библиотека либо игнорирует такую конфигурацию, либо корректирует её на этапе инициализации.

Влияние на ввод и редактирование

При активной работе с полем ввода minimumValue влияет на каждое изменение состояния:

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

Особенность заключается в том, что AutoNumeric работает не с сырым текстом, а с нормализованным числовым представлением, поэтому сравнение с minimumValue происходит уже после приведения строки к числу.

Работа с десятичной точностью

При использовании значений с фиксированной точностью minimumValue должен соответствовать формату отображения. Например, при настройке двух знаков после запятой:

  • minimumValue: -10.00
  • корректно: '-10.00'
  • потенциально проблемно: -10 (в зависимости от конфигурации decimalPlaces)

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

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

При использовании API:

  • set(value)
  • setNumericString(value)
  • setUnformatted(value)

значение проходит через тот же механизм проверки minimumValue, что и пользовательский ввод.

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

Поведение при инициализации

Во время создания экземпляра AutoNumeric:

new AutoNumeric(element, {
  minimumValue: "-100"
});

происходит первичная нормализация:

  1. проверка типа значения
  2. приведение к внутреннему числовому формату
  3. согласование с maximumValue
  4. применение к начальному значению поля

Если начальное значение элемента уже ниже minimumValue, оно корректируется сразу при инициализации.

Особенности обработки отрицательных значений

minimumValue особенно критичен при работе с отрицательными числами. В таких сценариях он определяет:

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

Например:

  • minimumValue = 0 полностью запрещает отрицательные значения
  • minimumValue = -1000 позволяет ограниченный уход в минус
  • minimumValue = -Infinity снимает ограничение

Влияние на UX и поведение интерфейса

Хотя minimumValue является логическим ограничением, он также влияет на восприятие интерфейса:

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

При этом чрезмерно строгие ограничения могут создавать ощущение «жёсткого» интерфейса, особенно если пользователь не понимает причин автоматической коррекции значения.

Сценарии использования

Типичные области применения minimumValue:

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

В каждом из этих случаев minimumValue выступает как встроенный механизм бизнес-логики на уровне UI-библиотеки.

Особенности интеграции с динамическими данными

При изменении minimumValue во время работы приложения необходимо учитывать:

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

При обновлении конфигурации через update() или аналогичные методы AutoNumeric пересчитывает текущее значение относительно нового диапазона.

Взаимодействие с событиями

minimumValue косвенно влияет на события библиотеки:

  • onInvalidPaste — при вставке значения ниже минимума
  • onValueChanged — при автоматической корректировке
  • onCorrectedValue — при приведении к допустимому диапазону

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

Поведение при отключении ограничения

При установке minimumValue в значение -Infinity или эквивалент отключается нижняя граница. В этом режиме:

  • разрешены любые отрицательные значения
  • проверка диапазона по нижней границе не выполняется
  • остаётся активной только верхняя граница (если задана maximumValue)

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