В AutoNumeric обработка ведущих нулей является частью механизма нормализации пользовательского ввода и влияет на то, как строковое представление числа преобразуется в числовое значение и обратно. Ведущие нули возникают в момент ввода данных, вставки из буфера обмена, программной установки значения и при форматировании уже существующих чисел. Контроль этого поведения важен для финансовых форм, интерфейсов ввода сумм, идентификаторов и любых сценариев, где формат отображения должен быть строго определён.
При вводе значения AutoNumeric работает с промежуточной строкой,
которая затем приводится к числу с учётом настроек локали, разделителей
и ограничений. Ведущие нули — это символы '0',
расположенные слева от первой значащей цифры в целой части числа.
Примеры исходного ввода:
0001230010000000045.67Без специальных настроек библиотека нормализует такие значения, удаляя лишние нули или преобразуя их в каноническое представление числа.
Ключевым механизмом управления является параметр
leadingZero, который определяет стратегию обработки ведущих
нулей.
denyРежим жёсткого удаления ведущих нулей. Любая последовательность нулей перед значащими цифрами устраняется.
Примеры поведения:
000123 → 1230000 → 000045 → 45Характерная особенность заключается в том, что пользователь не может сохранить формат с ведущими нулями даже временно — ввод корректируется сразу после каждого изменения.
allowРежим допускает временное существование ведущих нулей в процессе ввода, но не гарантирует их сохранение в итоговом значении. В зависимости от контекста и других настроек (например, при потере фокуса) нули могут быть удалены.
Примеры поведения:
000123123Этот режим используется в интерфейсах, где важно не мешать набору числа, но итоговое значение должно быть каноническим.
keepРежим сохранения ведущих нулей как значимой части отображаемого значения. В этом случае строковое представление сохраняется максимально близким к вводу пользователя.
Примеры поведения:
000123 → 0001230010 → 0010Числовое значение при этом может храниться отдельно от отображаемого, поскольку ведущие нули не влияют на математическую величину, но влияют на формат вывода.
AutoNumeric разделяет два уровня представления:
Ведущие нули влияют в основном на formattedValue. Даже в
режиме keep внутреннее числовое значение остаётся
нормализованным:
000123 → rawValue: 123000123Это разделение позволяет одновременно поддерживать строгую математическую корректность и визуальную точность ввода.
При последовательном вводе символов поведение зависит от режима:
В режиме deny:
0 → 000 → остаётся 0001 → 1В режиме allow:
0 → 000 → временно 00001 → временно 001, затем
нормализацияВ режиме keep:
0 → 000 → 00001 → 001Backspace и delete обрабатываются с учётом текущего состояния строки.
При удалении последнего значимого символа:
0 → "" или 0 (в зависимости
от emptyInputBehavior)00 → 0 или 00 (в режиме
keep)При вставке строк AutoNumeric предварительно очищает входные данные. Ведущие нули могут быть:
deny)allow)keep)Примеры вставки значения 0004500:
deny → 4500allow → 4500 после нормализацииkeep → 0004500Особое внимание уделяется случаям, когда вставляемая строка содержит разделители тысяч или десятичные символы. В таких ситуациях ведущие нули обрабатываются после полной парсинг-нормализации.
Опция minimumValue может влиять на итоговое
представление числа с ведущими нулями.
Пример:
leadingZero = keepminimumValue = 10При вводе:
0005 → нарушает минимум → корректируется до
10В результате ведущие нули теряют смысл, так как приоритет получает ограничение диапазона значений.
Отдельный случай — значение ноль.
0000 → может быть преобразовано в 00.00 → зависит от количества десятичных знаков000 в режиме keep → может сохраняться как
000, если нет нормализацииНоль является пограничным значением между пустым вводом и числовым
значением, поэтому его обработка часто зависит от
emptyInputBehavior.
Если поле очищается до пустого состояния, взаимодействие с ведущими нулями может изменяться.
Типичные сценарии:
emptyInputBehavior = "zero" → пустой ввод становится
0emptyInputBehavior = "null" → значение становится
nullemptyInputBehavior = "focus" → отображение зависит от
фокусаВ режимах, где пустое значение превращается в ноль, ведущие нули теряют смысл, так как происходит немедленная нормализация.
При вызове методов установки значения:
anElement.set(000123);
или:
anElement.set("000123");
AutoNumeric применяет те же правила обработки ведущих нулей, что и при пользовательском вводе.
Поведение:
deny → 123allow → 123 после нормализацииkeep → 000123Важно, что при передаче числового литерала ведущие нули в JavaScript уже отсутствуют, поэтому значимыми являются только строковые значения.
Событие blur часто используется как точка финальной нормализации.
Именно здесь режим allow чаще всего приводит к удалению
ведущих нулей.
Сценарий:
0007878При keep формат сохраняется даже после blur, если не
включены дополнительные правила форматирования.
Ведущие нули могут взаимодействовать с десятичной частью:
00012.300000.50После обработки:
Примеры:
deny → 12.30keep → 00012.30Частая ошибка — ожидание сохранения пользовательского формата при
активном deny. Этот режим всегда приводит к нормализации и
не предназначен для сохранения визуальной структуры ввода.
Режим keep может приводить к некорректному восприятию
суммы:
0001000 визуально отличается от 1000, хотя
численно эквивалентенЭто особенно критично в интерфейсах бухгалтерии и расчётов.
Вставка данных часто обходится без учёта пользовательского ввода, что приводит к неожиданной нормализации уже «грязных» данных.
При использовании кастомных разделителей и локалей:
1 000 0001.000.0001,000,000ведущие нули обрабатываются до применения группировки разрядов. Это означает, что:
0001000 → сначала 1000 → затем
форматирование 1 000
Обработка ведущих нулей в AutoNumeric представляет собой многоступенчатый процесс: