Плейсхолдер в маске ввода определяет визуальную структуру поля до начала пользовательского ввода и во время частичного заполнения. Он формирует «каркас» маски, задавая пользователю подсказку о формате данных и одновременно ограничивая допустимые позиции ввода. В библиотеке Inputmask механизм плейсхолдеров тесно связан с определениями символов маски, поведением отображения и настройками очистки значения.
Основной символ плейсхолдера задаётся через параметр конфигурации
placeholder. Он определяет, каким символом будут
заполняться незаполненные позиции маски. По умолчанию часто используется
символ _, однако его поведение можно изменить на любой
другой символ или даже строку, если требуется специфическое визуальное
представление.
Inputmask({
mask: "99-99-9999",
placeholder: "_"
}).mask(input);
В данном случае поле ввода отображает структуру даты, где
незаполненные позиции визуально представлены подчёркиванием. Маска
сохраняет фиксированные разделители -, а плейсхолдер
заполняет только места, предназначенные для ввода цифр.
Важной особенностью является различие между плейсхолдером маски и
отображаемым значением. Плейсхолдер не является частью реального
значения поля, он существует только в интерфейсе. При извлечении
значения через .value или API Inputmask он не учитывается,
если не включены дополнительные режимы сохранения форматирования.
Отображение плейсхолдера может зависеть от фокуса элемента и состояния ввода. Для этого используются параметры:
showMaskOnFocus — отображение маски при получении
фокусаshowMaskOnHover — отображение маски при наведении
курсораclearMaskOnLostFocus — очистка незаполненных позиций
при потере фокусаКомбинация этих параметров позволяет тонко управлять тем, когда пользователь видит структуру маски.
Inputmask({
mask: "(999) 999-9999",
placeholder: "_",
showMaskOnFocus: true,
showMaskOnHover: false,
clearMaskOnLostFocus: false
}).mask(input);
В таком режиме маска всегда сохраняет свою структуру при фокусе, но не появляется при наведении, а при потере фокуса незаполненные символы остаются видимыми. Это полезно в формах, где важно сохранять визуальный формат даже при частично заполненных данных.
Inputmask использует систему definitions, которая
определяет поведение каждого символа маски. Каждый символ может
обозначать набор допустимых значений. Например, 9 — цифра,
a — буква, * — алфавитно-цифровой символ.
Плейсхолдер взаимодействует с этими определениями напрямую: он отображается только там, где символ маски ожидает ввод, но ещё не заполнен.
Inputmask({
mask: "aaa-999",
definitions: {
"a": {
validator: "[A-Za-z]",
cardinality: 1
}
},
placeholder: "_"
}).mask(input);
В этом примере первые три позиции ожидают буквы, следующие три — цифры. Плейсхолдер подчёркивает обе зоны одинаково, но логика ввода различается в зависимости от определения символа.
Плейсхолдер может вести себя по-разному в зависимости от режима заполнения:
В стандартной конфигурации Inputmask применяется фиксированное отображение, обеспечивающее предсказуемость интерфейса.
Параметр placeholder может быть использован не только
для символов, но и для строковых значений, включая пробелы или
специальные символы. Это позволяет адаптировать визуальное представление
под требования интерфейса.
Inputmask({
mask: "99.99.9999",
placeholder: " "
}).mask(input);
Использование пробела в качестве плейсхолдера создаёт эффект «пустой формы», где структура маски сохраняется, но не перегружает визуально интерфейс дополнительными символами.
В некоторых интерфейсах применяются символы вроде · или
•, чтобы подчеркнуть позиции ввода без визуального
шума.
При редактировании данных Inputmask перераспределяет плейсхолдерные символы в зависимости от текущего состояния ввода. При удалении символов:
Это поведение особенно важно в масках с фиксированными разделителями, где изменение структуры недопустимо.
При использовании необязательных сегментов ([])
плейсхолдер ведёт себя более гибко. Незадействованные части маски могут
полностью скрываться или отображаться частично, в зависимости от
конфигурации.
Inputmask({
mask: "+7 (999) 999-99-99[ x999]",
placeholder: "_"
}).mask(input);
В данном случае дополнительный сегмент расширения номера появляется только при вводе. Пока он не активирован, плейсхолдеры внутри него не отображаются.
Плейсхолдер напрямую влияет на восприятие пустого значения, но не изменяет его фактическое содержимое. При полностью пустом поле:
Некоторые конфигурации могут изменять это поведение через
clearIncomplete, определяя, считается ли неполный ввод
допустимым.
При автозаполнении (autocomplete) браузера Inputmask перерасчитывает позиции плейсхолдера. Если данные вставляются целиком:
Это важно при вставке номеров телефонов, дат или идентификаторов из буфера обмена.
В масках числового типа плейсхолдер часто используется для выравнивания разрядов. Например:
Inputmask({
alias: "decimal",
digits: 2,
placeholder: "0"
}).mask(input);
Здесь плейсхолдер 0 создаёт эффект фиксированной
числовой структуры, где не заполненные разряды визуально выглядят как
нули. Это может использоваться в финансовых интерфейсах, но требует
осторожности, так как визуальное и фактическое значение могут
восприниматься по-разному.
Inputmask позволяет изменять параметры маски после инициализации. При
изменении placeholder маска может быть перерасчитана без
повторного создания экземпляра.
const im = new Inputmask({
mask: "9999-9999",
placeholder: "_"
});
im.mask(input);
im.option({
placeholder: "*"
});
В этом случае отображение незаполненных позиций обновляется динамически, сохраняя текущее введённое значение.
В режимах с направлением справа налево
(rightToLeft: true) плейсхолдеры заполняют позиции в
обратном порядке. Это влияет на визуальное восприятие структуры маски,
особенно в числовых и телефонных форматах.
Inputmask({
mask: "999-999",
rightToLeft: true,
placeholder: "_"
}).mask(input);
Здесь заполнение начинается с правой стороны, а плейсхолдеры перераспределяются соответственно направлению ввода.
Параметр clearMaskOnLostFocus изменяет поведение
отображения плейсхолдера при уходе пользователя из поля. При включённой
очистке:
При отключённой очистке:
Это критично для форм, где важно различать «пусто» и «не заполнено до конца».
В предустановленных алиасах Inputmask (date,
datetime, phone) плейсхолдер часто
переопределяется автоматически, чтобы соответствовать формату данных.
Например, для даты может использоваться
dd/mm/yyyy-структура с собственным отображением
незаполненных позиций.
Изменение placeholder в таких случаях должно учитывать
внутреннюю логику алиаса, так как некорректный символ может ухудшить
читаемость или нарушить восприятие формата.
При пошаговом вводе Inputmask постоянно перерасчитывает:
Этот процесс обеспечивает синхронизацию между внутренним состоянием маски и её визуальным представлением, предотвращая рассинхронизацию между вводимыми символами и отображаемой структурой.