Inputmask предоставляет механизм управления состоянием введённого
значения при потере фокуса и при незавершённом вводе, позволяя гибко
контролировать поведение поля ввода в момент ухода пользователя с
элемента формы и при наличии частично заполненной маски. Параметры
clearMaskOnLostFocus и clearIncomplete
относятся к группе поведенческих настроек, влияющих на отображение и
очистку значения, а не на саму структуру маски.
Параметр clearMaskOnLostFocus управляет тем, как поле
ввода отображает значение, если оно не полностью заполнено в момент,
когда элемент теряет фокус.
true — незаполненная маска очищается при уходе из
поляfalse — частично введённое значение остаётся
видимымМаска телефонного номера:
Inputmask({
mask: "+7 (999) 999-99-99",
clearMaskOnLostFocus: true
}).mask(input);
+7 (7При противоположной настройке:
Inputmask({
mask: "+7 (999) 999-99-99",
clearMaskOnLostFocus: false
}).mask(input);
+7 (7Очистка при потере фокуса происходит не только на основании факта наличия символов, но и на основе состояния заполненности буфера маски.
Учитываются:
showMaskOnHover и showMaskOnFocus
(косвенно влияют на визуальное восприятие состояния)Если маска считается невалидно заполненной,
активируется механизм очистки при blur.
clearIncompleteПараметр clearIncomplete определяет поведение при
незавершённой маске в момент сериализации или потери фокуса.
Контроль сохранения частично заполненных значений в случае, когда маска не завершена до конца.
Inputmask({
mask: "99/99/9999",
clearIncomplete: true
}).mask(input);
12/0При отключённой опции:
Inputmask({
mask: "99/99/9999",
clearIncomplete: false
}).mask(input);
12/0 остаётся в inputclearMaskOnLostFocus и clearIncompleteНесмотря на внешнее сходство, эти параметры работают на разных уровнях жизненного цикла значения.
| Поведение | clearMaskOnLostFocus | clearIncomplete |
|---|---|---|
| Реакция на blur | да | косвенно |
| Очистка незаполненной маски | да | нет |
| Контроль сериализации | нет | да |
| Влияние на submit/getValue | минимальное | значительное |
Inputmask({
mask: "+7 (999) 999-99-99",
clearMaskOnLostFocus: true,
clearIncomplete: true
}).mask(input);
Inputmask({
mask: "99-999",
clearMaskOnLostFocus: true,
clearIncomplete: false
}).mask(input);
Inputmask({
mask: "99-99",
clearMaskOnLostFocus: false,
clearIncomplete: true
}).mask(input);
Inputmask перехватывает доступ к значению поля и применяет внутреннюю нормализацию.
getValue() возвращает пустую строку при незавершённой
маскеinput.value может временно содержать отображаемые
символы, но логическое значение считается пустымgetValue() возвращает фактически введённые данныеХотя параметры напрямую не зависят от отображения маски, визуальное восприятие состояния влияет на поведение пользователя и косвенно на момент активации очистки.
Используется комбинация:
clearMaskOnLostFocus: trueclearIncomplete: trueХарактерно для:
Используется:
clearMaskOnLostFocus: falseclearIncomplete: falseХарактерно для:
При наличии серверной проверки данных часто используется:
clearMaskOnLostFocus: falseclearIncomplete: trueПозволяет:
Поведение этих параметров напрямую влияет на:
Inputmask фактически разделяет визуальное представление и логическое
значение, а clearMaskOnLostFocus и
clearIncomplete управляют границей между этими слоями.
При одновременной необходимости:
возникает расхождение между UI и данными, особенно при
clearIncomplete: false.
Автозаполнение может:
В сочетании с clearMaskOnLostFocus: true это может
приводить к неожиданной очистке поля.
При input.value = "..." и последующем применении
маски:
clearIncomplete может обнулить значение при
синхронизацииclearMaskOnLostFocus не участвует напрямую, но влияет
при последующем blurЧасто встречающиеся комбинации:
truefalseclearMaskOnLostFocus = true,
clearIncomplete = falseПоведение этих параметров формирует базовую стратегию обработки незавершённых данных в Inputmask, определяя границу между временным вводом и финальным значением.