Событие autoNumeric:rawValueModified относится к
внутреннему механизму библиотеки AutoNumeric и отражает момент изменения
сырых числовых данных, которые лежат в основе
отображаемого значения. В отличие от событий, связанных с визуальным
представлением (форматированием числа в поле ввода), это событие
фиксирует именно изменение «чистой» величины без учета локализации,
разделителей тысяч, символов валюты и прочих форматирующих
элементов.
Внутренняя модель AutoNumeric оперирует двумя параллельными представлениями значения:
1 234,56 €)1234.56)Именно raw value используется при вычислениях, валидации
и передаче данных в бизнес-логику приложения.
Событие autoNumeric:rawValueModified возникает в момент,
когда изменяется именно это внутреннее числовое представление,
независимо от того, как оно было изменено.
Событие срабатывает в следующих ситуациях:
Важно, что событие фиксирует не любое взаимодействие с input, а именно факт изменения результирующего числового значения.
AutoNumeric предоставляет несколько событий, и понимание различий между ними критично для корректной архитектуры логики:
autoNumeric:formatted — изменение отображаемой
строкиautoNumeric:rawValueModified — изменение числового
значенияautoNumeric:initialized — завершение инициализации
экземпляраautoNumeric:destroyed — уничтожение экземпляраautoNumeric:rawValueModified является центральным
событием для бизнес-логики, так как именно raw value обычно используется
в расчетах, отправке на сервер и проверках.
AutoNumeric использует нативную систему событий DOM, поэтому стандартный способ подписки выглядит следующим образом:
const input = document.querySelector('#price');
const anElement = AutoNumeric.getAutoNumericElement(input);
input.addEventListener('autoNumeric:rawValueModified', (event) => {
const rawValue = anElement.getNumber();
console.log('Изменённое значение:', rawValue);
});
Здесь важно, что событие привязывается к DOM-элементу, а не к объекту конфигурации.
Подписка может быть встроена в жизненный цикл экземпляра:
const anElement = new AutoNumeric('#price', {
decimalPlaces: 2
});
anElement.domElement.addEventListener('autoNumeric:rawValueModified', (e) => {
const value = anElement.getNumber();
console.log('RAW изменился:', value);
});
Такой подход обеспечивает прямую связь между экземпляром и его событиями.
Событие autoNumeric:rawValueModified содержит
стандартный объект Event, расширенный библиотекой AutoNumeric. Однако
ключевая информация извлекается не из event.detail, а через
API экземпляра.
Типичный сценарий обработки:
input.addEventListener('autoNumeric:rawValueModified', () => {
const raw = anElement.getNumber();
});
Причина такого подхода заключается в том, что AutoNumeric хранит актуальное состояние внутри экземпляра, а событие служит лишь триггером изменения.
Событие возникает не только при пользовательском вводе, но и при использовании методов API:
anElement.set(5000);
После вызова set() происходит:
autoNumeric:rawValueModified;Аналогично ведут себя методы:
setNumber()clear()remove()setUnformatted()Каждый из них может инициировать изменение внутреннего числового состояния.
При очистке поля:
anElement.clear();
raw value становится:
null или 0 (в зависимости от
конфигурации);autoNumeric:rawValueModified срабатывает
обязательно.Это критически важно для форм, где пустое значение должно интерпретироваться отдельно от нуля.
AutoNumeric поддерживает различные форматы чисел:
1.234,56)1,234.56)Однако rawValueModified игнорирует форматирование.
Независимо от локали:
Событие активно применяется в архитектурах, где требуется реактивная синхронизация состояния:
input.addEventListener('autoNumeric:rawValueModified', () => {
formState.price = anElement.getNumber();
});
Это позволяет:
При работе с множеством полей важно учитывать изоляцию событий:
document.querySelectorAll('.money').forEach((el) => {
const instance = new AutoNumeric(el, { decimalPlaces: 2 });
el.addEventListener('autoNumeric:rawValueModified', () => {
console.log(instance.getNumber());
});
});
Каждый экземпляр генерирует собственное событие, привязанное к конкретному DOM-элементу. События не пересекаются между инстансами.
autoNumeric:rawValueModified часто используется как
триггер валидации:
input.addEventListener('autoNumeric:rawValueModified', () => {
const value = anElement.getNumber();
if (value < 0) {
input.classList.add('error');
} else {
input.classList.remove('error');
}
});
Такой подход позволяет выполнять проверку сразу после изменения числового значения, не дожидаясь submit формы.
При быстром вводе события могут генерироваться на каждый символ, что приводит к высокой частоте вызовов обработчиков. В таких случаях используется:
formatted value может обновляться отдельно от raw value, поэтому нельзя полагаться на DOM-строку при бизнес-логике.
Если значение input меняется напрямую через
input.value = ..., событие AutoNumeric не срабатывает, если
не используется API библиотеки.
const input = document.querySelector('#amount');
const an = new AutoNumeric(input, {
decimalPlaces: 2,
minimumValue: '0'
});
let lastValue = null;
input.addEventListener('autoNumeric:rawValueModified', () => {
const current = an.getNumber();
if (current === lastValue) return;
lastValue = current;
updateServerModel(current);
});
Такой подход минимизирует лишние вызовы и обеспечивает синхронизацию состояния с серверной моделью.
autoNumeric:rawValueModified выступает как основной
триггер изменения данных. Оно находится на уровне логики данных, а не
представления, и поэтому используется в:
Его ключевая особенность заключается в том, что оно фиксирует не действие пользователя, а результат изменения числового состояния, что делает его стабильной точкой интеграции для внешней логики.