radixPoint настройка

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

В основе числовой маски лежит необходимость различать два представления числа: пользовательское (форматированное) и машинное (нормализованное). radixPoint задаёт именно пользовательский разделитель дробной части, который может отличаться от стандартного символа точки.


Назначение и область применения

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

Основные задачи:

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

Базовая конфигурация

Параметр задаётся в объекте настроек маски:

Inputmask("numeric", {
  radixPoint: "."
}).mask(selector);

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


Локализация ввода

В различных локалях используется разный символ разделителя:

  • точка (.) — англоязычные системы;
  • запятая (,) — большая часть европейских локалей.

Inputmask позволяет адаптировать ввод без изменения бизнес-логики приложения:

Inputmask("numeric", {
  radixPoint: ","
}).mask(selector);

При такой конфигурации ввод 12,5 интерпретируется как число с дробной частью 5 десятых.


Взаимодействие с groupSeparator

radixPoint тесно связан с параметром groupSeparator, который отвечает за разделение тысячных разрядов.

Пример совместной конфигурации:

Inputmask("numeric", {
  radixPoint: ",",
  groupSeparator: " ",
  autoGroup: true
}).mask(selector);

Форматирование при вводе:

  • ввод: 1234567,89
  • отображение: 1 234 567,89

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


Поведение при вводе символов

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

Сценарии поведения:

  • первый ввод radixPoint переводит ввод в дробную часть;
  • повторный ввод игнорируется;
  • курсор автоматически перемещается после разделителя;
  • вставка текста нормализуется.

Альтернативные символы ввода

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

Inputmask("numeric", {
  radixPoint: ",",
  // альтернативные символы обрабатываются внутренней логикой
}).mask(selector);

В результате:

  • ввод 12.5 преобразуется в 12,5;
  • отображение остаётся консистентным с настройкой.

Связь с digits и digitsOptional

radixPoint определяет границу дробной части, но её поведение зависит от параметров точности:

Inputmask("numeric", {
  radixPoint: ".",
  digits: 2,
  digitsOptional: false
}).mask(selector);

Комбинации:

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

Пример:

  • ввод: 10
  • отображение: 10.00 (при digits: 2)

Нормализация значения

Внутреннее значение Inputmask всегда приводится к стандартному виду, независимо от отображаемого radixPoint.

Например:

Inputmask("numeric", {
  radixPoint: ","
}).mask(selector);

При вводе:

  • пользователь вводит: 3,14
  • получаемое значение: 3.14

Таким образом, radixPoint влияет только на визуальный слой, не изменяя семантику числа.


Ограничения и особенности

Использование radixPoint накладывает ряд поведенческих ограничений:

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

Особое внимание требуется при вставке значений из буфера обмена: Inputmask выполняет автоматическую очистку и приводит строку к корректному формату.


Поведение с отрицательными числами

При включённой поддержке отрицательных значений radixPoint остаётся независимым от знака:

Inputmask("numeric", {
  radixPoint: ".",
  allowMinus: true
}).mask(selector);

Примеры допустимого ввода:

  • -12.5
  • -0.75
  • 0.25

Знак минуса фиксируется отдельно и не влияет на позиционирование дробного разделителя.


Автоматическое форматирование

При активных настройках форматирования Inputmask перераспределяет вводимые символы:

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

Это обеспечивает стабильное поведение при быстром наборе и вставке длинных чисел.


Поведение при удалении символов

Удаление radixPoint приводит к изменению структуры числа:

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

При обратном вводе дробная часть создаётся заново.


Совместимость с alias numeric

В numeric-алиасе radixPoint является базовым параметром форматирования и часто используется совместно с:

  • digits;
  • digitsOptional;
  • autoGroup;
  • allowMinus;
  • rightAlign.

Конфигурации numeric-масок без явного указания radixPoint используют значение по умолчанию, зависящее от внутренней локали или стандартной настройки библиотеки.


Поведение при вставке данных

При вставке строк Inputmask анализирует структуру числа:

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

Например:

  • вставка 1.234,56 при radixPoint: "," приводит к 1234,56.

Итоговая роль radixPoint в архитектуре масок

radixPoint выступает связующим элементом между пользовательским вводом и числовой моделью данных. Он не просто задаёт символ, а определяет структуру восприятия дробных значений в рамках маски:

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

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