maximumValue задаёт верхнюю границу допустимого
числового значения, которое может быть введено или установлено в поле
ввода. Любое значение, превышающее этот предел, либо корректируется
автоматически (в зависимости от конфигурации), либо блокируется на этапе
ввода.
Ограничение работает не как простая проверка после ввода, а как часть механизма нормализации данных: значение контролируется в процессе парсинга и форматирования, что позволяет поддерживать консистентность данных в реальном времени.
maximumValue принимает строковое представление
числа:
"1000""999999.99""-1" (в комбинации с логикой отрицательных
диапазонов)"0" (для запрета положительных значений)Использование строки вместо числа обусловлено необходимостью точного контроля над форматированием, особенно при работе с большими значениями и плавающей точкой.
Поведение при выходе за пределы maximumValue зависит от
дополнительных параметров конфигурации:
При включённой нормализации значение принудительно приводится к максимуму:
new AutoNumeric(input, {
maximumValue: "1000"
});
Ввод:
1500 → 1000
Значение не сохраняется выше установленного порога.
В некоторых режимах библиотека предотвращает ввод символов, которые приведут к превышению:
Это особенно важно для UX в финансовых интерфейсах, где недопустимо временное состояние «невалидного числа».
При некоторых конфигурациях ограничение применяется только при потере фокуса:
blur значение корректируетсяminimumValuemaximumValue всегда работает в связке с
minimumValue, формируя диапазон:
minimumValue ≤ value ≤ maximumValue
Пример:
new AutoNumeric(input, {
minimumValue: "0",
maximumValue: "100"
});
Поведение:
| Ввод | Результат |
|---|---|
| -10 | 0 |
| 50 | 50 |
| 150 | 100 |
При нарушении границ применяется либо обрезка, либо запрет ввода, в зависимости от режима.
maximumValue имеет более высокий приоритет, чем:
Это означает, что даже если формат допускает более точное значение, оно всё равно будет приведено к допустимому диапазону.
Пример:
new AutoNumeric(input, {
maximumValue: "10",
decimalPlaces: 4
});
Ввод:
10.99999 → 10.0000
При использовании API:
an.set(5000);
если установлено:
maximumValue: "1000"
результат зависит от стратегии обработки:
1000maximumValue может быть отрицательным числом:
{
minimumValue: "-1000",
maximumValue: "-10"
}
В таком случае диапазон работает «в обратную сторону»:
| Ввод | Результат |
|---|---|
| -5 | -10 |
| -500 | -500 |
| -2000 | -1000 |
Важно учитывать, что логика сравнения остаётся математической, а не строковой.
maximumValue влияет на поведение клавиатурного
ввода:
При наличии дробной части учитываются:
decimalCharacterdecimalPlacesПример:
{
maximumValue: "99.99",
decimalPlaces: 2
}
Ввод:
100.00 → 99.99
Если дробная часть превышает допустимое значение, сначала применяется округление, затем проверка диапазона.
unformatOnSubmitПри отправке формы значение может быть преобразовано:
unformatOnSubmit: true, перед отправкой
используется сырое числоmaximumValue, оно уже
гарантированно нормализованоТаким образом, сервер всегда получает валидное значение без необходимости дополнительной проверки диапазона.
maximumValue можно изменять после инициализации:
an.update({
maximumValue: "500"
});
Поведение при обновлении:
Если новый максимум ниже текущего значения, происходит немедленная нормализация.
В высокоточных сценариях:
maximumValue должен задаваться с учётом погрешностей
округленияПример проблемного сценария:
maximumValue: "100"
ввод: 99.999999
После округления может произойти переход в 100 или обратно в 99.99 в зависимости от конфигурации округления.
maximumValue: 1000 // нежелательно
Правильно:
maximumValue: "1000"
minimumValueminimumValue: "500"
maximumValue: "100"
Результат: некорректный диапазон, приводящий к конфликтам валидации.
Если decimalPlaces больше, чем ожидается, значение может
временно «вылезать» за предел до коррекции.
maximumValue в архитектуре контроля данныхВнутри AutoNumeric параметр maximumValue является частью
трёхуровневой системы:
minimumValue / maximumValuemaximumValue действует на втором этапе, но может
инициировать корректировки на первом и третьем.
При разных локалях:
1,000.50 (US)1.000,50 (EU)maximumValue сравнивается не с текстом, а с
нормализованным числом, поэтому локаль влияет только на отображение, но
не на логику ограничения.
При каждом изменении выполняется цепочка:
maximumValueЭта цепочка делает maximumValue ключевым элементом
защиты данных на уровне UI.