Ограничение диапазона в AutoNumeric реализуется через жёсткую и мягкую валидацию числового значения, при которой вводимое или программно устанавливаемое число принудительно приводится к заданным границам. Основная цель механизма — исключить выход значения за пределы допустимого интервала ещё на уровне отображения и хранения, а не только при финальной отправке формы.
Диапазон определяется двумя ключевыми параметрами:
Обе границы работают совместно и образуют закрытый интервал, в рамках которого остаётся любое корректное значение.
new AutoNumeric('#input', {
minimumValue: '0',
maximumValue: '100'
});
В этом режиме любое значение меньше 0 или больше 100 не сохраняется в чистом виде, а приводится к ближайшей допустимой границе в зависимости от выбранной стратегии обработки.
AutoNumeric использует несколько стратегий обработки выхода за пределы диапазона. Ключевое различие заключается в том, как именно система реагирует на нарушение ограничения:
На практике наиболее часто используется поведение по умолчанию, при котором происходит принудительное ограничение:
new AutoNumeric('#input', {
minimumValue: '10',
maximumValue: '50',
modifyValueOnWheel: false
});
Если пользователь вводит 5, значение становится
10. Если вводится 120, результат фиксируется
как 50.
Ограничение диапазона работает независимо от визуального форматирования. Разделители тысяч, знаки валют и количество знаков после запятой не влияют на проверку границ.
new AutoNumeric('#input', {
minimumValue: '-1000',
maximumValue: '1000',
decimalPlaces: 2,
digitGroupSeparator: ' ',
decimalCharacter: ','
});
Значение -1500,00 будет автоматически приведено к
-1000,00, независимо от того, как оно отображается в
интерфейсе.
При использовании методов API диапазон применяется и к программным изменениям. Это означает, что прямое присвоение значения также проходит через валидатор.
const an = new AutoNumeric('#input', {
minimumValue: '0',
maximumValue: '500'
});
an.set(800);
В результате значение не сохранится как 800, а будет
приведено к 500.
Аналогично работает получение и преобразование значения:
const value = an.getNumber();
Если поле содержит значение вне допустимого диапазона (например, после внешнего изменения DOM), оно будет нормализовано при вызове методов чтения.
Диапазон в AutoNumeric включает обе границы. Это означает, что значения, равные минимуму или максимуму, считаются допустимыми.
{
minimumValue: '10',
maximumValue: '20'
}
Корректные значения:
Некорректные:
Такая модель исключает неоднозначность при проверке и упрощает обработку данных на серверной стороне.
Особое поведение наблюдается при работе с пустыми полями. Пустое значение не всегда считается нарушением диапазона, если оно разрешено конфигурацией.
new AutoNumeric('#input', {
minimumValue: '0',
maximumValue: '100',
emptyInputBehavior: 'null'
});
В таком режиме поле может оставаться пустым, пока пользователь не введёт число. Однако при первом валидном вводе активируется контроль границ.
Если же пустое значение запрещено, оно будет заменяться на ближайшее допустимое значение или на минимум диапазона, в зависимости от настроек поведения.
Диапазон может изменяться после инициализации экземпляра. Это важно при сценариях, где допустимые значения зависят от внешних условий (например, выбор валюты, ролей пользователя или состояния формы).
const an = new AutoNumeric('#input', {
minimumValue: '0',
maximumValue: '100'
});
an.update({
minimumValue: '-50',
maximumValue: '200'
});
После обновления новые границы начинают применяться ко всем последующим операциям ввода и установки значения.
Если текущее значение выходит за новый диапазон, оно также нормализуется автоматически.
Ограничение диапазона часто используется совместно с параметром шага изменения значения. Это особенно заметно при использовании стрелок клавиатуры или колеса мыши.
new AutoNumeric('#input', {
minimumValue: '0',
maximumValue: '10',
step: '0.5'
});
При таких настройках увеличение значения происходит дискретно, но диапазон всё равно является финальным ограничителем. Даже при корректных шагах невозможно выйти за пределы 0–10.
При вставке текста из буфера обмена выполняется полная нормализация входного значения:
new AutoNumeric('#input', {
minimumValue: '100',
maximumValue: '200'
});
Если вставляется значение 999, оно будет немедленно
приведено к 200 без промежуточного отображения
некорректного состояния.
Диапазоны могут полностью находиться в отрицательной области или пересекать ноль. Это не влияет на алгоритм проверки.
new AutoNumeric('#input', {
minimumValue: '-500',
maximumValue: '-100'
});
Любое значение, превышающее -100, будет приведено к
верхней границе, а любое меньшее -500 — к нижней.
Если диапазон пересекает ноль:
{
minimumValue: '-50',
maximumValue: '50'
}
значение свободно изменяется в обе стороны, но всегда остаётся в пределах симметричного интервала.
Ограничение диапазона имеет более высокий приоритет, чем любые визуальные преобразования. Даже если пользователь вводит значение, которое временно соответствует формату, но выходит за пределы допустимого интервала, оно корректируется сразу после завершения ввода.
Это поведение особенно важно при обработке:
В сложных формах диапазон часто комбинируется с дополнительными ограничениями: разрешением отрицательных чисел, фиксированным количеством знаков и запретом на нулевые значения.
new AutoNumeric('#input', {
minimumValue: '1',
maximumValue: '9999',
allowDecimalPadding: false
});
В таких конфигурациях диапазон становится центральным элементом контроля корректности данных, а остальные параметры лишь уточняют допустимый формат внутри него.