Поведение поля ввода при потере фокуса в AutoNumeric определяется комбинацией внутренних правил форматирования и конфигурационных параметров, управляющих тем, как числовое значение должно отображаться пользователю в состоянии покоя. Потеря фокуса (blur-состояние) выступает как ключевой момент синхронизации между «чистым» числом и его визуальным представлением, включающим разделители разрядов, символы валют, ограничения по точности и правила отображения пустых значений.
В момент, когда элемент ввода теряет фокус, AutoNumeric выполняет финальную нормализацию значения. Внутреннее числовое представление преобразуется обратно в строку с учетом текущих настроек форматирования. Это включает:
Если в процессе редактирования пользователь вводил «сырое» значение (например, без группировки разрядов), то после blur оно всегда приводится к каноническому виду, определенному конфигурацией экземпляра AutoNumeric.
Поведение при blur не является фиксированным и определяется набором опций инициализации.
Ключевыми параметрами выступают:
digitGroupSeparator — символ группировки разрядов
(например, пробел или запятая);decimalCharacter — символ десятичного разделителя;decimalPlaces — фиксированное количество знаков после
запятой;decimalPlacesRawValue — точность внутреннего
представления;minimumValue и maximumValue — ограничения
диапазона.При потере фокуса значение всегда приводится к этим правилам, даже если во время ввода оно временно нарушало формат.
Параметры:
currencySymbolcurrencySymbolPlacementопределяют, будет ли символ отображаться слева или справа от числа, а также будет ли между ними пробел. В момент blur AutoNumeric пересобирает строку целиком, обеспечивая корректное позиционирование символа независимо от промежуточного состояния ввода.
Опция emptyInputBehavior играет критическую роль при
потере фокуса:
null — поле остается пустым;zero — подставляется ноль с форматированием;min или max — подстановка предельных
значений;focus — поведение зависит от состояния фокуса, но при
blur обычно приводит к нормализации.Таким образом, даже пустое поле при потере фокуса может быть преобразовано в валидное числовое значение.
Хотя напрямую не относится к blur, параметры:
selectOnFocuscaretPositionOnFocusвлияют на пользовательский цикл ввода и косвенно определяют, как значение будет выглядеть при следующем возврате в поле после blur.
При вводе значения, соответствующего ограничениям, blur приводит его к формату:
Пример логики:
12345.612 345.60 (при соответствующей конфигурации)Если пользователь завершил ввод без десятичной части:
10001 000.00AutoNumeric добавляет недостающие знаки в соответствии с
decimalPlaces.
Во время редактирования возможны состояния вроде:
-1.1,При потере фокуса такие значения преобразуются:
0, либо пусто (в зависимости от
emptyInputBehavior)При blur всегда используется финальная стратегия округления. Она зависит от внутренней настройки точности и может приводить к изменениям отображаемого значения:
Важно, что отображаемое значение после blur может отличаться от введенного символ за символом, поскольку AutoNumeric оперирует числовым типом, а не строкой.
AutoNumeric использует как нативное событие blur, так и
собственные механизмы обратных вызовов.
Опция onBlur позволяет перехватывать момент потери
фокуса после применения форматирования. В этот момент значение уже
приведено к финальному виду.
Типичный порядок действий:
blur;onBlur.Внутри callback доступно уже нормализованное значение.
Дополнительно могут быть задействованы:
onChange — если значение изменилось до blur;onFocusOut (в зависимости от версии и обертки);AutoNumeric всегда хранит два представления:
При потере фокуса происходит синхронизация:
Это обеспечивает стабильность данных при любых пользовательских манипуляциях.
При необходимости управление отображением может выполняться вручную через API AutoNumeric.
Примеры операций:
Логика:
const anElement = AutoNumeric.getAutoNumericElement('#price');
// получить raw value
anElement.getNumber();
// получить formatted value
anElement.getFormatted();
// принудительное обновление отображения
anElement.reformat();
После программного обновления форматирование соответствует тому же правилу, что и при blur: значение приводится к финальному виду согласно конфигурации.
При быстром переходе фокус/blur между элементами возможны промежуточные состояния, однако AutoNumeric гарантирует:
Это достигается за счет синхронного выполнения форматирования внутри обработчика потери фокуса.
Отображение при потере фокуса в AutoNumeric можно описать как детерминированный процесс преобразования внутреннего числового состояния в строго форматированную строку с учетом:
Blur выступает точкой фиксации окончательного визуального состояния поля ввода, обеспечивая согласованность между пользовательским вводом и внутренним числовым представлением.