Префикс и суффикс в масках ввода представляют собой фиксированные строковые элементы, которые визуально и логически обрамляют пользовательский ввод, не являясь частью изменяемых данных. В контексте Inputmask они используются для формирования устойчивого формата поля, где часть значения всегда присутствует до или после редактируемой области.
Внутренне Inputmask разделяет содержимое поля на три логические зоны:
Такая сегментация позволяет отделить данные пользователя от декоративных или форматирующих элементов, сохраняя при этом единое строковое представление в input-элементе.
Префикс и суффикс не участвуют в процессе валидации как часть маски ввода, но влияют на позиционирование курсора, операции выделения и формирование итогового значения.
Префикс задаётся через параметр prefix и представляет
собой строку, автоматически добавляемую в начало значения поля.
Inputmask({
alias: "numeric",
prefix: "$ "
}).mask(document.querySelector("input"));
В данном случае любое вводимое число визуально будет отображаться с символом валюты в начале:
$ 1250
Префикс обладает следующими характеристиками:
unmaskedvalueСуффикс задаётся через параметр suffix и добавляется в
конец строки значения.
Inputmask({
alias: "numeric",
suffix: " kg"
}).mask(document.querySelector("input"));
Результат отображения:
75 kg
Суффикс аналогично префиксу обладает фиксированным поведением:
Одним из ключевых аспектов работы префиксов и суффиксов является управление кареткой. Inputmask автоматически предотвращает установку курсора в области фиксированных сегментов.
Особенности поведения:
Такое поведение обеспечивает целостность формата и исключает возможность повреждения фиксированных частей строки.
Наиболее частое применение префиксов и суффиксов связано с алиасом
numeric, где они используются для представления валют,
единиц измерения и процентов.
Inputmask({
alias: "numeric",
digits: 2,
radixPoint: ".",
prefix: "€ ",
suffix: " EUR"
}).mask(input);
Формируемое отображение:
€ 1200.50 EUR
В данном случае:
prefix задаёт валютный символ в началеsuffix фиксирует обозначение валюты в концеПри извлечении данных через API Inputmask фиксированные элементы автоматически исключаются.
const value = input.inputmask.unmaskedvalue();
При значении:
€ 1200.50 EUR
результат будет:
1200.50
Префикс и суффикс не участвуют в формировании результата, так как считаются визуальными элементами представления.
При частичной или полной очистке значения фиксированные части остаются неизменными.
Пример конфигурации:
Inputmask({
alias: "numeric",
prefix: "$ "
}).mask(input);
При удалении всех цифр поле отображает:
$
Это связано с тем, что префикс считается обязательным элементом маски и не удаляется даже при отсутствии данных.
Опция rightAlign влияет на визуальное расположение
числовой части относительно префикса и суффикса.
Inputmask({
alias: "numeric",
prefix: "$ ",
rightAlign: true
}).mask(input);
При включённом rightAlign:
Суффикс при этом фиксируется справа за пределами выравнивания и не участвует в смещении содержимого.
Префикс и суффикс обрабатываются как защищённые сегменты строки. Любые попытки редактирования этих областей перенаправляются на ближайшую допустимую позицию ввода.
Механизм включает:
В результате обеспечивается неизменность структуры маски независимо от действий пользователя.
При вставке строки через clipboard Inputmask анализирует содержимое и отделяет фиксированные элементы от данных.
Если вставляемое значение содержит префикс или суффикс, они:
Например, при вставке:
$ 500 USD
в маску с аналогичными параметрами будет извлечено только:
500
Префиксы и суффиксы часто используются совместно с:
groupSeparator для разбиения разрядовdigits и digitsOptional для дробной
частиautoGroup для автоматической группировки чиселInputmask({
alias: "numeric",
prefix: "£ ",
groupSeparator: ",",
digits: 0
}).mask(input);
Результат:
£ 1,250,000
При этом фиксированные части остаются внешними по отношению к логике группировки.
При построении маски Inputmask формирует шаблон, где префикс и суффикс записываются как статические литералы. Они не разбиваются на токены маски и не участвуют в алгоритмах валидации символов.
Это приводит к следующим последствиям:
При использовании сложных масок возможны ограничения:
В числовых масках также важно учитывать, что префикс и суффикс увеличивают длину строки, но не влияют на длину вводимой части.
При использовании clearIncomplete и подобных параметров
префикс и суффикс не рассматриваются как критерий полноты ввода.
Проверка завершённости маски выполняется только по изменяемой части.
Таким образом, поле считается валидным даже при минимальном вводе, если числовая или символьная часть соответствует требованиям, независимо от наличия фиксированных элементов.