Отключение лишних опций

В конфигурации AutoNumeric значительная часть поведения формируется набором опций, которые активируют дополнительные вычисления, форматирование и обработчики событий. При массовом использовании в формах или при высокой частоте обновления значений лишние опции становятся источником замедления и усложнения предсказуемости данных.

Минимизация конфигурации строится на принципе: активируется только то, что непосредственно требуется для отображения и ввода числа, всё остальное переводится в состояние «выключено» или заменяется нейтральным поведением.

Ключевые направления отключения:

  • форматирование групп разрядов;
  • символы валют и префиксы/суффиксы;
  • дополнительные визуальные трансформации;
  • события и хуки жизненного цикла;
  • поведенческие модификаторы ввода;
  • автоматические преобразования при потере фокуса.

Отключение группировки разрядов

Разделение числа на группы (например, 1 000 000 или 1,000,000) является одной из самых затратных операций в AutoNumeric, поскольку требует регулярного пересчёта строки при каждом вводе.

Отключение группировки снижает нагрузку на перерисовку значения и упрощает внутреннюю нормализацию строки.

Типичная конфигурация без группировки:

new AutoNumeric('#input', {
  digitGroupSeparator: '',
  decimalCharacter: '.'
});

Убираются:

  • визуальное форматирование тысячных групп;
  • дополнительные операции парсинга при каждом вводе;
  • лишние преобразования при вставке значения.

Удаление валютных и текстовых символов

Символы валюты и текстовые постфиксы требуют постоянного синхронизированного отображения с числом. При каждом изменении значения происходит пересборка строки.

Отключение данных элементов:

new AutoNumeric('#input', {
  currencySymbol: '',
  currencySymbolPlacement: 'p',
  suffixText: '',
  prefixText: ''
});

Исключаются:

  • конкатенация строк при каждом вводе;
  • дополнительные проверки позиции курсора;
  • корректировка длины строки при редактировании.

Минимизация округления и нормализации

Округление и приведение числа к заданному формату может выполняться на каждом blur-событии или при каждом обновлении значения. В высоконагруженных формах это создаёт избыточные вычисления.

Снижение нагрузки достигается отключением автоматической нормализации:

new AutoNumeric('#input', {
  decimalPlaces: null,
  allowDecimalPadding: false
});

Поведение становится ближе к «сырым» числам:

  • отсутствует принудительное выравнивание дробной части;
  • значение сохраняет введённый формат;
  • минимизируется пересчёт при потере фокуса.

Отключение реакций на колесо мыши

Обработка событий колесика мыши часто используется для инкремента/декремента значения. В массовых таблицах или формах это приводит к нежелательным обновлениям состояния.

Отключение:

new AutoNumeric('#input', {
  modifyValueOnWheel: false
});

Исключается:

  • перехват wheel-событий;
  • вычисление шага изменения;
  • перерисовка значения при прокрутке.

Отключение автоматических преобразований при фокусе

AutoNumeric может изменять отображение при получении или потере фокуса (например, показывать «чистое» число или форматированное представление). Эти операции добавляют лишние DOM-обновления.

Конфигурация упрощённого поведения:

new AutoNumeric('#input', {
  showOnlyNumbersOnFocus: false,
  selectOnFocus: false
});

Исключается:

  • переключение режимов отображения;
  • автоматическое выделение текста;
  • дополнительные операции над строкой при focus/blur.

Отключение обработки пустых значений и вспомогательных состояний

Некоторые режимы AutoNumeric изменяют поведение пустого поля: подставляют ноль, преобразуют значение или инициируют форматирование.

Для упрощённой модели данных:

new AutoNumeric('#input', {
  emptyInputBehavior: 'null'
});

Результат:

  • отсутствие автоматической подстановки значений;
  • сохранение факта пустого ввода без преобразований;
  • упрощение синхронизации с внешним состоянием.

Упрощение обработки вставки и ввода

При вставке текста библиотека может выполнять полную нормализацию строки, включая удаление символов, замену разделителей и пересчёт числа. При отключении части логики поведение становится более прямолинейным.

new AutoNumeric('#input', {
  unformatOnSubmit: false
});

Также может быть полезно отключение дополнительных преобразований ввода, если они не требуются логикой приложения.


Отключение событий и хуков

AutoNumeric поддерживает набор событий и callback-хуков, которые вызываются на каждом этапе изменения значения. При частом обновлении они становятся значительным источником накладных расходов.

Минимизация достигается полной деактивацией кастомной логики:

new AutoNumeric('#input', {
  onInvalidPaste: null,
  onFocus: null,
  onBlur: null,
  onChange: null
});

Исключаются:

  • вызовы пользовательских функций при каждом изменении;
  • лишние переходы в JavaScript-контекст;
  • каскадные обновления состояния приложения.

Уменьшение количества наблюдаемых операций

При работе с большими формами важно исключать любые фоновые перерасчёты. AutoNumeric может отслеживать изменения состояния элемента и пересчитывать значение при каждом вмешательстве.

Оптимизация достигается за счёт отказа от дополнительных наблюдателей и синхронизаций:

new AutoNumeric('#input', {
  watchExternalChanges: false
});

Конфигурации с предельно минимальным набором функций

В сценариях высокой нагрузки используется предельно упрощённая конфигурация, где сохраняется только базовое числовое поведение без визуального оформления.

new AutoNumeric('#input', {
  digitGroupSeparator: '',
  decimalCharacter: '.',
  currencySymbol: '',
  suffixText: '',
  prefixText: '',
  modifyValueOnWheel: false,
  selectOnFocus: false,
  emptyInputBehavior: 'null',
  allowDecimalPadding: false
});

Такая конфигурация:

  • минимизирует количество операций форматирования;
  • снижает количество DOM-обновлений;
  • упрощает синхронизацию значения с моделью данных;
  • уменьшает вероятность конфликтов с внешними обработчиками.

Влияние отключения опций на внутреннюю модель обработки

Каждая отключённая функция уменьшает количество этапов обработки ввода. Внутренний цикл преобразования значения становится короче:

  1. чтение значения из input;
  2. базовая нормализация числа;
  3. запись обратно без дополнительных преобразований.

Исключаются:

  • визуальное форматирование строки;
  • вычисление позиций курсора при изменении длины строки;
  • запуск пользовательских callback-функций;
  • пересборка строки с символами и разделителями.

Результатом становится более предсказуемое поведение при массовых обновлениях и сниженная нагрузка на обработку событий ввода.