В маскировании ввода числовых и финансовых данных часто требуется поведение, при котором значение визуально «прилипает» к правому краю поля. Это характерно для сумм, процентов, кодов фиксированной длины, где пользователь вводит данные справа налево с точки зрения заполнения, а не направления текста. Подобная модель влияет не только на отображение, но и на позиционирование курсора, логику вставки символов и восприятие незаполненных разрядов.
В библиотеке масок это поведение реализуется через режим правого выравнивания, при котором внутреннее представление значения и его визуальная компоновка разделяются: данные остаются логически слева направо, но отображение строится от правого края поля.
При активированном режиме заполнение поля меняет характер:
Ключевая особенность заключается в том, что пользователь воспринимает ввод как работу с разрядами числа, а не как последовательную строку.
Режим правого выравнивания задаётся параметром конфигурации маски:
Inputmask("999999").mask(element);
Inputmask({
mask: "999999",
rightAlign: true
}).mask(element);
При включении параметра поле начинает вести себя как числовой буфер фиксированной ширины, где новые символы добавляются справа.
Наиболее выраженный эффект наблюдается при работе с числовыми шаблонами:
Inputmask({
mask: "999.999.999",
rightAlign: true
}).mask(element);
Поведение при вводе:
1 отображается как 1123 отображается как 123123456 отображается как 123.456Разделители групп начинают формироваться от конца строки, а не от начала, что соответствует финансовым форматам.
При отсутствии введённых данных поле может вести себя по-разному в зависимости от настроек:
Пример:
Inputmask({
mask: "99/99/9999",
rightAlign: true,
placeholder: "_"
}).mask(element);
Результат до ввода может выглядеть как:
__/__/____
но визуально прижатым к правому краю поля.
Правое выравнивание напрямую влияет на позицию каретки:
Это важно для форматов, где логическая значимость разрядов уменьшается справа налево (например, копейки/цента, младшие разряды кода).
При использовании числовых конфигураций поведение становится более предсказуемым в финансовом контексте:
Inputmask({
alias: "numeric",
rightAlign: true,
digits: 2,
groupSeparator: " ",
autoGroup: true
}).mask(element);
Особенности:
При включённом режиме группировки цифр форматирование выполняется с конца числа:
Пример поведения:
ввод: 1 → 1
ввод: 12 → 12
ввод: 123 → 123
ввод: 1234 → 1 234
ввод: 1234567 → 1 234 567
Правое выравнивание изменяет стандартную модель редактирования строки:
Вставка:
Удаление:
При использовании необязательных символов маски эффект становится более гибким:
Inputmask({
mask: "[9][9][9][9][9]",
rightAlign: true
}).mask(element);
В таком случае:
Режим правого выравнивания накладывает ряд ограничений:
setValue;Также важно учитывать, что при отключении режима значение может визуально «перестраиваться», так как исчезает привязка к правому краю.
При установке значения программно поведение сохраняет правила выравнивания:
const im = new Inputmask({
mask: "999999",
rightAlign: true
}).mask(element);
element.inputmask.setValue("123");
Результат:
123
При этом внутреннее представление остаётся нормализованным числовым значением без пробелов.
Наиболее устойчивые сценарии использования включают:
Во всех этих случаях правое выравнивание снижает когнитивную нагрузку на восприятие разрядности и упрощает работу с числами фиксированного формата.