Параметр negativeBracketsTypeOnBlur в библиотеке
AutoNumeric управляет тем, как отображается отрицательное число при
потере фокуса полем ввода (событие blur). Его основная задача — задать
визуальный стиль представления отрицательных значений, когда
пользователь завершает редактирование поля.
В отличие от поведения во время ввода, где значение может отображаться в «сыром» виде, режим blur используется для финального форматирования, которое пользователь видит после выхода из поля.
AutoNumeric поддерживает несколько способов отображения отрицательных чисел:
-1 234.56)(1 234.56))Параметр negativeBracketsTypeOnBlur отвечает именно за
режим скобок в момент потери фокуса.
negativeBracketsTypeOnBlur определяет:
Важно понимать, что параметр влияет только на отображение, а не на
внутреннее числовое значение. Внутренне число всегда хранится в
нормализованном виде (например, -1234.56), независимо от
выбранного визуального формата.
В зависимости от версии AutoNumeric и конфигурации, параметр может принимать следующие значения:
null или falseОтключает использование скобок при blur.
Поведение:
Пример:
-1 234.56
'parentheses'Классический бухгалтерский стиль отображения отрицательных значений.
Поведение:
Пример:
(1 234.56)
'brackets'Использует квадратные скобки вместо круглых.
Пример:
[1 234.56]
'angle'Использует угловые скобки (реже применяемый формат).
Пример:
<1 234.56>
AutoNumeric разделяет режимы отображения:
При использовании negativeBracketsTypeOnBlur происходит
следующее:
Пользователь вводит отрицательное число:
-1234.56Поле теряет фокус
AutoNumeric применяет выбранный стиль:
new AutoNumeric('#input', {
decimalPlaces: 2,
digitGroupSeparator: ' ',
decimalCharacter: '.',
negativeBracketsTypeOnBlur: 'parentheses'
});
Поведение:
-1234.56(1 234.56)negativeBracketsTypeOnBlur часто используется вместе с
параметром:
negativePositiveSignPlacementОн определяет позицию минуса или знака относительно числа. Однако при включении скобок приоритет обычно переходит к скобочной нотации.
Если включены скобки, минус как символ фактически не отображается, даже если другие параметры допускают его размещение.
При использовании различных локалей поведение может меняться:
Пример:
{
digitGroupSeparator: '.',
decimalCharacter: ',',
negativeBracketsTypeOnBlur: 'brackets'
}
Результат:
[1.234,56]
Если значение задается программно:
anElement.set(-5000);
AutoNumeric применяет тот же принцип:
-5000negativeBracketsTypeOnBlurЕсли элемент находится в blur-состоянии, формат применяется сразу. Если в focus — форматирование откладывается до потери фокуса.
При использовании валютного символа поведение становится более сложным:
{
currencySymbol: '$',
currencySymbolPlacement: 'p',
negativeBracketsTypeOnBlur: 'parentheses'
}
Результат:
($1 234.56)
Особенности:
Параметр не изменяет:
getNumber()Во время редактирования скобки не отображаются. В focus всегда используется «чистое» представление числа.
Если одновременно заданы:
приоритет отдается скобкам при blur.
Если поле очищается:
anElement.set('');
или значение становится пустым,
negativeBracketsTypeOnBlur не применяется, так как
отсутствует числовая сущность для форматирования.
Наиболее частый сценарий — бухгалтерские и финансовые системы:
Скобочная нотация считается стандартом для отображения убытков.
При использовании inline-editing:
В некоторых странах бухгалтерская форма скобок является предпочтительной или обязательной, что делает параметр критически важным для корректного отображения.
negativeBracketsTypeOnBlur часто работает в связке
с:
decimalPlacesdigitGroupSeparatordecimalCharactershowPositiveSigncurrencySymbolcurrencySymbolPlacementИтоговый вывод всегда является результатом последовательного применения всех правил форматирования, где скобки накладываются последним шагом при blur.
Распространенное заблуждение — ожидание, что скобки влияют на число. На самом деле:
(1 000) == -1000 в памятиПри попытке вручную форматировать значение через
onChange можно получить двойное форматирование, если не
учитывать автоматическое применение скобок на blur.
Если в одном интерфейсе используется минус, а в другом скобки, без явной логики перехода между режимами, это может вызывать визуальную неоднозначность, хотя технически оба представления эквивалентны.