Параметр maximumValue в библиотеке AutoNumeric
определяет максимально допустимое значение, которое пользователь может
ввести в поле. Ограничение применяется во время ввода, вставки данных,
программного изменения значения и вызова внутренних методов
библиотеки.
Этот параметр играет важную роль при работе:
По умолчанию библиотека использует очень большое максимальное значение, однако в большинстве реальных интерфейсов ограничение необходимо задавать явно.
<input id="price">
new AutoNumeric('#price', {
maximumValue: '10000'
});
Теперь поле не позволит ввести значение больше
10000.
Если пользователь попытается набрать:
15000
библиотека:
maximumValue всегда задаётся строкой.
Правильно:
maximumValue: '5000'
Неправильно:
maximumValue: 5000
Причина заключается во внутренней системе обработки чисел в AutoNumeric. Библиотека работает со строковыми представлениями для предотвращения ошибок округления и потери точности.
Наиболее распространённый сценарий — ограничение верхней границы положительного диапазона.
new AutoNumeric('#amount', {
minimumValue: '0',
maximumValue: '999999'
});
Допустимые значения:
0
150
25000
999999
Недопустимые:
1000000
2500000
maximumValue поддерживает десятичные значения.
new AutoNumeric('#temperature', {
decimalPlaces: 2,
maximumValue: '99.99'
});
Допустимо:
45.50
99.99
Недопустимо:
100.00
150.25
Финансовые интерфейсы часто используют максимальные лимиты для защиты от ошибок ввода.
new AutoNumeric('#salary', {
currencySymbol: '$',
digitGroupSeparator: ',',
decimalCharacter: '.',
maximumValue: '1000000'
});
Максимально допустимая сумма:
$1,000,000
Попытка ввода большей суммы будет отклонена.
new AutoNumeric('#percent', {
suffixText: '%',
decimalPlaces: 2,
minimumValue: '0',
maximumValue: '100'
});
Это особенно полезно для:
maximumValue может быть отрицательным.
new AutoNumeric('#balance', {
minimumValue: '-1000',
maximumValue: '-10'
});
Допустимый диапазон:
-1000 ... -10
Недопустимо:
0
5
-5
minimumValueПараметры minimumValue и maximumValue почти
всегда используются вместе.
new AutoNumeric('#range', {
minimumValue: '10',
maximumValue: '20'
});
Диапазон:
10 ≤ значение ≤ 20
Поведение зависит от настроек библиотеки и способа ввода.
Возможные сценарии:
Пользователь не сможет набрать лишнюю цифру.
Например:
9999
При попытке добавить ещё один символ:
99999
ввод блокируется.
Некоторые конфигурации приводят значение к максимально допустимому.
Например:
150
автоматически превращается в:
100
При интеграции с формами можно отображать сообщение об ошибке.
if (anElement.getNumber() > 1000) {
console.log('Превышен лимит');
}
Максимальный лимит можно менять во время работы приложения.
const an = new AutoNumeric('#sum', {
maximumValue: '1000'
});
Позже:
an.update({
maximumValue: '5000'
});
После обновления поле начнёт принимать большие значения.
const limit = isAdmin ? '100000' : '1000';
new AutoNumeric('#payment', {
maximumValue: limit
});
Подобная схема часто применяется:
new AutoNumeric('#quantity', {
decimalPlaces: 0,
minimumValue: '1',
maximumValue: '500'
});
Поле принимает только целые значения от 1 до
500.
new AutoNumeric('#age', {
decimalPlaces: 0,
minimumValue: '0',
maximumValue: '120'
});
maximumValue косвенно ограничивает длину числа.
Например:
maximumValue: '9999'
фактически ограничивает ввод четырьмя цифрами.
Библиотека поддерживает числа большой длины.
new AutoNumeric('#bigNumber', {
maximumValue: '999999999999999.99'
});
Это важно для:
Сравнение выполняется библиотекой корректно даже при работе со строками.
maximumValue: '1000'
будет правильно сравниваться с:
999
1000
1001
без типичных ошибок JavaScript, связанных с floating point arithmetic.
overrideMinMaxLimitsПараметр overrideMinMaxLimits влияет на обработку выхода
за пределы диапазона.
Пример:
new AutoNumeric('#test', {
minimumValue: '0',
maximumValue: '100',
overrideMinMaxLimits: 'ignore'
});
Варианты поведения:
| Значение | Описание |
|---|---|
ignore |
Игнорировать ограничения |
floor |
Принудительно применять минимум |
ceiling |
Принудительно применять максимум |
invalid |
Считать значение невалидным |
new AutoNumeric('#eur', {
currencySymbol: '€',
currencySymbolPlacement: 'p',
maximumValue: '50000'
});
new AutoNumeric('#income', {
digitGroupSeparator: ' ',
decimalCharacter: ',',
maximumValue: '10000000'
});
Отображение:
10 000 000
Получение текущего числа:
const value = anElement.getNumber();
Проверка:
if (value > 5000) {
console.log('Лимит превышен');
}
const settings = anElement.getSettings();
console.log(settings.maximumValue);
anElement.set(500);
Если значение превышает лимит:
anElement.set(500000);
результат зависит от конфигурации ограничений.
pasteПри вставке библиотека также проверяет maximumValue.
Если ограничение:
maximumValue: '100'
и пользователь вставляет:
5000
значение будет обработано согласно правилам ограничения.
useEffect(() => {
new AutoNumeric(inputRef.current, {
maximumValue: '10000'
});
}, []);
mounted() {
new AutoNumeric(this.$refs.amount, {
maximumValue: '5000'
});
}
ngAfterViewInit(): void {
new AutoNumeric(this.input.nativeElement, {
maximumValue: '25000'
});
}
Неправильно:
maximumValue: 1000
Правильно:
maximumValue: '1000'
minimumValueОшибка:
minimumValue: '100',
maximumValue: '50'
Диапазон становится некорректным.
Неправильно:
decimalPlaces: 2,
maximumValue: '10'
при ожидании:
10.99
Правильно:
maximumValue: '10.99'
<input id="credit">
new AutoNumeric('#credit', {
currencySymbol: '$',
digitGroupSeparator: ',',
decimalCharacter: '.',
decimalPlaces: 2,
minimumValue: '1000',
maximumValue: '50000'
});
Допустимый диапазон кредита:
$1,000.00 — $50,000.00
new AutoNumeric('#cartCount', {
decimalPlaces: 0,
minimumValue: '1',
maximumValue: '99'
});
Поле не позволит заказать более 99 единиц товара.
new AutoNumeric('#tax', {
suffixText: '%',
decimalPlaces: 2,
minimumValue: '0',
maximumValue: '20'
});
maximumValue корректно работает совместно с:
currencySymboldigitGroupSeparatordecimalCharacterdecimalPlacessuffixTextnegativePositiveSignPlacementleadingZeroroundingMethodПравильно настроенное максимальное значение:
| Сценарий | maximumValue |
|---|---|
| Проценты | '100' |
| Возраст | '120' |
| Количество товаров | '999' |
| Зарплата | '1000000' |
| Банковский перевод | '100000000' |
| Налоговая ставка | '20' |
| Рейтинг | '5' |
| Температура | '999.99' |
new AutoNumeric('#complex', {
minimumValue: '0',
maximumValue: '1000',
decimalPlaces: 2,
leadingZero: 'deny',
emptyInputBehavior: 'zero'
});
Такая конфигурация:
0 в пустое поле.