Работа с денежными значениями в формате швейцарского франка в
AutoNumeric требует учёта специфики локали: использование пробела как
разделителя тысяч, запятая как десятичного разделителя, а также
особенности отображения символа валюты CHF, который может
располагаться как до, так и после числа в зависимости от требований
интерфейса.
В библиотеке AutoNumeric подобные настройки реализуются через конфигурационные параметры, позволяющие стандартизировать ввод и отображение финансовых данных без необходимости ручной обработки строк.
Основой для настройки швейцарского франка является набор параметров, определяющих формат числа:
" "",""CHF"Пример инициализации AutoNumeric:
import AutoNumeric from 'autonumeric';
const options = {
digitGroupSeparator: ' ',
decimalCharacter: ',',
currencySymbol: 'CHF ',
currencySymbolPlacement: 'p',
decimalPlaces: 2,
minimumValue: '0',
modifyValueOnWheel: false
};
new AutoNumeric('#amount', options);
Такая конфигурация формирует отображение вида:
CHF 12 345,67
Швейцарский финансовый формат отличается строгой структурой, применяемой в банковской и бухгалтерской среде:
Группировка разрядов Разделение тысяч выполняется пробелами, а не запятыми или точками. Это снижает визуальную перегруженность больших чисел.
Десятичная часть Используется запятая, что соответствует европейской системе нотации.
Стабильная точность Для валютных значений почти всегда фиксируется 2 знака после запятой, даже если дробная часть равна нулю.
Жёсткая типизация ввода AutoNumeric предотвращает ввод символов, не соответствующих числовому формату, включая множественные десятичные разделители.
Для финансовых систем важно обеспечить контроль над вводимыми значениями. AutoNumeric предоставляет режим строгой валидации:
const strictOptions = {
digitGroupSeparator: ' ',
decimalCharacter: ',',
currencySymbol: 'CHF ',
currencySymbolPlacement: 'p',
decimalPlaces: 2,
decimalPlacesRawValue: 2,
allowDecimalPadding: true,
minimumValue: '-999999999',
maximumValue: '999999999',
selectNumberOnly: true,
emptyInputBehavior: 'zero'
};
new AutoNumeric('#amount', strictOptions);
В этом режиме обеспечивается:
AutoNumeric разделяет два уровня представления данных:
Пример получения данных:
const anElement = new AutoNumeric('#amount', options);
anElement.set(12345.6);
console.log(anElement.getNumericString()); // "12345.60"
console.log(anElement.getFormatted()); // "CHF 12 345,60"
Использование raw-значения критично при передаче данных на сервер, чтобы исключить ошибки преобразования локализованных форматов.
В некоторых приложениях требуется изменение отображения валюты без пересоздания инстанса:
anElement.update({
currencySymbol: 'CHF ',
currencySymbolPlacement: 'p'
});
Также возможно переключение на формат без валютного символа:
anElement.update({
currencySymbol: '',
currencySymbolPlacement: 's'
});
Это полезно при переключении режимов отображения: бухгалтерский, аналитический, экспортный.
Финансовые данные в швейцарском формате часто требуют явного отображения отрицательных сумм. AutoNumeric поддерживает несколько вариантов:
const negativeOptions = {
digitGroupSeparator: ' ',
decimalCharacter: ',',
currencySymbol: 'CHF ',
currencySymbolPlacement: 'p',
negativeSignCharacter: '-',
negativeBracketsTypeOnBlur: null
};
Отрицательные значения отображаются как:
CHF -1 250,00
При необходимости можно использовать скобочный формат:
negativeBracketsTypeOnBlur: '(,)'
Результат:
CHF (1 250,00)
AutoNumeric активно используется в формах, где требуется синхронизация пользовательского ввода и бизнес-логики.
Пример привязки к input-элементу:
<input id="salary" type="text" />
const salary = new AutoNumeric('#salary', {
digitGroupSeparator: ' ',
decimalCharacter: ',',
currencySymbol: 'CHF ',
currencySymbolPlacement: 'p',
decimalPlaces: 2
});
Получение значения при отправке формы:
document.querySelector('form').addEventListener('submit', (e) => {
e.preventDefault();
const value = salary.getNumber(); // числовое значение
console.log(value);
});
В интерфейсах с множеством финансовых полей применяется массовая инициализация:
AutoNumeric.multiple('.chf-input', {
digitGroupSeparator: ' ',
decimalCharacter: ',',
currencySymbol: 'CHF ',
currencySymbolPlacement: 'p',
decimalPlaces: 2
});
Это позволяет централизованно управлять форматированием всех полей одного типа без дублирования конфигурации.
При работе с серверными API часто требуется преобразование форматов:
12345.67CHF 12 345,67AutoNumeric автоматически решает эту задачу через методы извлечения raw-значений.
Пример подготовки payload:
const payload = {
amount: anElement.getNumber()
};
Такой подход исключает ошибки, связанные с локализованными символами и разделителями.
Очистка поля регулируется параметром:
emptyInputBehavior: 'null'
Возможные варианты:
'null' — возвращает null'zero' — подставляет 0'focus' — очищает при фокусеДля финансовых приложений часто используется null, чтобы
различать отсутствие значения и ноль.
AutoNumeric позволяет предотвращать ввод некорректных значений на уровне UI:
{
minimumValue: '0',
maximumValue: '1000000'
}
Это особенно важно для систем бюджетирования и банковских интерфейсов, где диапазон значений строго регламентирован.
Несмотря на то, что CHF ассоциируется со Швейцарией, формат может варьироваться:
1 234.56 CHFCHF 1 234,56AutoNumeric позволяет адаптировать поведение через комбинацию
параметров decimalCharacter,
digitGroupSeparator и currencySymbolPlacement,
обеспечивая совместимость с различными региональными стандартами без
изменения бизнес-логики.