AutoNumeric реализует строгую модель обработки числового ввода, в которой каждый символ проходит этапы валидации, фильтрации и нормализации. Любой ввод трактуется не как произвольная строка, а как потенциальное числовое значение, проходящее через набор правил форматирования.
Ключевой принцип заключается в том, что в поле допускаются только символы, имеющие семантическое значение для числа или его представления. Остальные символы либо игнорируются, либо удаляются в процессе преобразования.
Основные категории разрешённых символов:
0–9- (при включённой
поддержке). или
,),,
. в зависимости от конфигурации)Цифры 0–9 являются базовым набором допустимых символов и
всегда разрешены вне зависимости от настроек.
Особенности обработки:
Пример допустимого ввода:
123456000123После форматирования:
000123 → 123Десятичный разделитель задаётся параметром конфигурации
decimalCharacter (или аналогичным в зависимости от
версии).
Поддерживаемые варианты:
.,Правила поведения:
Примеры:
Вариант с точкой:
12.3412.34Вариант с запятой:
12,3412,34Некорректные случаи:
12..34 → нормализуется к 12.3412,,34 → нормализуется к 12,34Разделитель групп используется для визуального форматирования числа и не влияет на его математическое значение.
Типичные значения:
" ",.'Поведение:
Пример:
1 000 0001000000Особенность: разделитель групп может динамически вставляться при наборе, создавая иллюзию «живого форматирования».
Символ - используется для обозначения отрицательных
значений и управляется параметром negativeSignAllowed.
Правила:
-Примеры:
-123 → допустимо--123 → нормализуется к -123123- → приводится к -123 или
123 в зависимости от режима вставкиПри строгих настройках отрицательные значения могут быть полностью
отключены, что автоматически блокирует ввод символа -.
Символ валюты является декоративным элементом и управляется
настройками вроде currencySymbol,
currencySymbolPlacement.
Допустимые формы:
$€₸Поведение:
Примеры:
$1,0001,000₸В режиме строгой конфигурации символ валюты может быть единственным разрешённым нечисловым символом помимо разделителей.
AutoNumeric поддерживает расширение набора допустимых символов через пользовательские настройки фильтрации.
Механизмы:
allowedChar / whitelistПример логики whitelist:
0–9, .,
-Это позволяет создавать специализированные поля, например:
%)Все символы, не входящие в допустимый набор, считаются запрещёнными.
К ним относятся:
@, #,
&, *, и т.д.)Стратегии обработки:
Пример:
12a34b56123456При вставке текста из буфера обмена применяется отдельный слой фильтрации.
Особенности:
Примеры:
1,2a3.4b5 → 123.45 (в зависимости
от локали)--10..5 → -10.5Вставка рассматривается как потенциально неконтролируемый источник данных, поэтому фильтрация более строгая, чем при ручном вводе.
AutoNumeric учитывает особенности локалей, где одни и те же символы могут иметь разное визуальное представление.
Примеры:
٠١٢٣٤٥12345Поведение:
При обработке ввода применяется многоуровневая система приоритетов:
Такая иерархия обеспечивает предсказуемость поведения даже при смешанном вводе.
Форматирование напрямую влияет на набор видимых символов, не меняя базового значения.
Особенности:
Пример:
10001 000 или 1,000 в
зависимости от настроекПри пересечении допустимых символов (например, когда десятичный и групповой разделитель совпадают) применяется контекстное разрешение.
Правила:
Пример конфликта:
,,Решение:
AutoNumeric формирует строгую, но гибкую систему разрешённых символов, где каждый вводимый знак имеет либо математическую, либо форматирующую функцию. Все остальные символы подвергаются фильтрации, что обеспечивает стабильность числовых значений независимо от способа ввода, локали и пользовательского поведения.