Метод formatAndSet в AutoNumeric относится к числу
ключевых инструментов, обеспечивающих одновременное форматирование
входного значения и его немедленную установку в привязанный DOM-элемент.
Его поведение объединяет две операции, которые обычно разделены:
преобразование «сырых» числовых данных в форматированный вид и
синхронизацию этого значения с внутренним состоянием экземпляра.
Основная задача formatAndSet заключается в том, чтобы
принять произвольное входное значение, привести его к внутреннему
числовому представлению библиотеки и сразу же отобразить его в элементе
ввода с учётом всех правил форматирования.
Метод особенно важен в сценариях, где данные поступают извне (API, формы, вычисления) и должны быть мгновенно приведены к единообразному виду без промежуточных шагов.
В контексте экземпляра AutoNumeric метод вызывается следующим образом:
anElement.formatAndSet(value);
где:
anElement — экземпляр AutoNumeric, привязанный к
DOM-элементу <input>value — значение, подлежащее форматированию и
установкеТип value может варьироваться в зависимости от
конфигурации и режима работы библиотеки.
Метод допускает несколько типов входных значений:
Прямые числа обрабатываются без дополнительной нормализации:
anElement.formatAndSet(1234.56);
Строки проходят этап парсинга с учётом локали и настроек:
anElement.formatAndSet("1,234.56");
Пустые строки и null интерпретируются в зависимости от
конфигурации (emptyInputBehavior, zeroEmpty, и
др.).
Метод formatAndSet можно рассматривать как
последовательность нескольких этапов:
На этом этапе выполняется:
Значение преобразуется во внутреннее представление (обычно
Number или специализированный тип внутри библиотеки).
Если значение не может быть корректно интерпретировано, применяется поведение, заданное конфигурацией (например, установка пустого значения или нуля).
Учитываются настройки экземпляра:
После форматирования результат записывается в input-элемент, вызывая обновление отображения.
Метод formatAndSet часто сравнивают с другими операциями
библиотеки.
set(value) выполняет установку значения без
обязательного повторного форматирования входных данных в том же объёме,
как formatAndSet.
format() работает с уже установленным значением и лишь
обновляет его визуальное представление.
parse() возвращает числовое значение без изменения
DOM.
При изменении настроек экземпляра поведение formatAndSet
автоматически адаптируется:
decimalCharacter влияет на парсинг строкdigitGroupSeparator влияет на итоговый
выводcurrencySymbol добавляет или убирает
префиксы/суффиксыdecimalPlaces влияет на округлениеЭто делает метод чувствительным к текущему состоянию конфигурации и позволяет централизованно управлять отображением данных.
В сценариях, где используются разные форматы чисел (например, европейский и американский), метод корректно интерпретирует:
1.234,56 как 1234.56 (при соответствующей
настройке)1,234.56 как 1234.56 (стандартный формат US)Критически важно, что formatAndSet не просто отображает
строку, а именно приводит её к внутреннему числу, что исключает ошибки
двойного форматирования.
При передаче отрицательных чисел метод учитывает:
Пример:
anElement.formatAndSet(-9876.5);
Результат зависит от конфигурации, но всегда соответствует правилам экземпляра.
Если входное значение не может быть интерпретировано как число, поведение определяется настройками:
0Метод не прерывает выполнение скрипта, что делает его устойчивым в условиях нестабильных входных данных.
При частом вызове formatAndSet, особенно в циклах или
при обработке больших массивов данных, важно учитывать:
В массовых сценариях предпочтительно временно отключать обновления интерфейса через механизмы блокировки обновлений экземпляра (если они предусмотрены конфигурацией), либо использовать пакетную обработку значений.
fetch("/api/price")
.then(res => res.json())
.then(data => {
priceField.formatAndSet(data.price);
});
const result = quantity * unitPrice;
priceField.formatAndSet(result);
priceField.formatAndSet("2 345,78");
Если значение, переданное в formatAndSet, эквивалентно
текущему, библиотека может оптимизировать обновление:
Это снижает нагрузку на интерфейс при частых обновлениях одинаковых данных.
После вызова formatAndSet внутреннее состояние
экземпляра включает:
get() и
set()Таким образом метод является точкой согласования между входными данными и внутренней моделью библиотеки.