Событие autoNumeric:formatted относится к ключевому
набору событий библиотеки AutoNumeric и используется в момент завершения
форматирования числового значения, когда внутреннее представление данных
преобразовано в строку с применением всех правил локализации,
разделителей, префиксов, суффиксов и настроек округления.
Событие фиксирует момент, когда значение элемента ввода уже прошло полный цикл обработки внутри AutoNumeric и стало отображаемым форматом. Это означает, что:
Событие служит точкой синхронизации между внутренним числовым состоянием и его визуальным представлением.
autoNumeric:formatted срабатывает после завершения
любого процесса, приводящего к изменению отображаемого значения:
set,
setNumericString, setNumber);clear);Последовательность обработки обычно выглядит следующим образом:
autoNumeric:formatted.Событие передаётся как DOM Event с расширенными свойствами, специфичными для AutoNumeric. В зависимости от версии библиотеки и режима работы, доступна следующая информация:
Типичная структура обработчика выглядит следующим образом:
element.addEventListener("autoNumeric:formatted", (event) => {
const formattedValue = event.detail.formatted;
const previousValue = event.detail.previous;
const numericValue = event.detail.number;
const instance = event.detail.instance;
});
Ключевая информация передаётся через event.detail. Этот
объект содержит состояние после завершения форматирования.
Строковое представление значения, уже пригодное для отображения в UI. Содержит:
Числовое значение после парсинга. Используется для вычислений и бизнес-логики.
Предыдущее отображаемое значение до обновления.
Ссылка на экземпляр AutoNumeric, позволяющая получить доступ к методам API.
При каждом изменении поля ввода событие может вызываться многократно, особенно при включённой опции live formatting. Каждая корректировка символа приводит к:
autoNumeric:formatted.Это делает событие чувствительным к частым обновлениям DOM.
При использовании методов:
set()setNumericString()setNumber()форматирование происходит синхронно, после чего генерируется
autoNumeric:formatted. В этом случае событие отражает
итоговое состояние после выполнения API-вызова.
При вызове очистки значение становится пустым или нулевым (в зависимости от конфигурации). Событие фиксирует:
null или 0 в numeric representation;Форматирование зависит от параметров экземпляра AutoNumeric:
digitGroupSeparator — разделитель тысяч;decimalCharacter — десятичный символ;currencySymbol — символ валюты;suffixText / prefixText;decimalPlaces;roundingMethod.Любое изменение этих параметров приводит к пересчёту текущего
значения и последующему autoNumeric:formatted.
autoNumeric:formatted часто используется как финальная
точка в цепочке:
autoNumeric:rawValueModified → изменение внутреннего
значения;autoNumeric:formatted → обновление отображения.Такая последовательность позволяет разделять:
const input = document.querySelector("#price");
input.addEventListener("autoNumeric:formatted", (event) => {
console.log("Formatted:", event.detail.formatted);
console.log("Numeric:", event.detail.number);
});
В этом случае фиксируется итоговое состояние после каждого форматирования.
input.addEventListener("autoNumeric:formatted", (event) => {
externalState.amount = event.detail.number;
});
Событие используется как источник правды для синхронизации данных приложения.
input.addEventListener("autoNumeric:formatted", (event) => {
const value = event.detail.number;
if (value < 0) {
event.detail.instance.set(0);
}
});
Форматированное значение используется как точка контроля корректности данных.
AutoNumeric может вызывать повторное событие
autoNumeric:formatted при:
Это создаёт потенциальный цикл обновлений, который требует контроля:
Работает с числовым представлением до форматирования. Используется для логики данных.
Фокусируется исключительно на отображаемом результате. Используется для UI и финального состояния.
Стандартное DOM-событие, которое не содержит информации о числовом преобразовании и форматировании AutoNumeric.
При применении методов округления:
событие отражает уже итоговое значение после всех вычислений. Это важно для финансовых сценариев, где промежуточные значения недоступны на уровне formatted-события.
Событие используется для отображения корректного значения валюты в режиме реального времени, где:
При каждом изменении значения:
В системах реактивного обновления событие используется как внешний триггер изменения состояния, особенно при отсутствии прямой привязки через двухсторонний binding.
При интенсивном вводе событие может генерироваться с высокой частотой. В таких случаях применяется:
previous и formatted.Пример защиты от лишней обработки:
let lastValue = null;
input.addEventListener("autoNumeric:formatted", (event) => {
if (event.detail.formatted === lastValue) return;
lastValue = event.detail.formatted;
});
AutoNumeric фактически реализует динамическую маску числового ввода.
autoNumeric:formatted является сигналом завершения
применения маски к текущему состоянию. Это позволяет интегрировать
библиотеку в системы:
При blur-событиях input может происходить финальная нормализация
значения. В этот момент autoNumeric:formatted отражает:
Несмотря на широкую применимость, событие имеет ряд особенностей:
В сценариях отправки формы autoNumeric:formatted часто
используется для подготовки финального отображаемого значения, однако
для передачи на сервер предпочтительно использовать числовое значение из
event.detail.number, поскольку formatted-строка может
содержать локализационные символы, непригодные для парсинга на стороне
backend.