Событие oncleared в библиотеке Inputmask вызывается в
момент полного очищения значения поля ввода. Оно предназначено для
обработки ситуаций, когда маска была сброшена пользователем вручную либо
очищена программно.
Обработчик позволяет реагировать на удаление данных, синхронизировать состояние интерфейса, сбрасывать ошибки валидации, изменять состояние кнопок, очищать связанные поля и выполнять любые дополнительные действия после удаления содержимого.
onclearedВо многих формах требуется определить момент, когда пользователь полностью очистил поле:
Стандартные DOM-события (input, change,
keyup) не всегда позволяют удобно определить именно факт
полного очищения маски. oncleared решает эту задачу
напрямую.
Inputmask({
oncleared: function () {
console.log("Поле очищено");
}
}).mask("#phone");
После полного удаления значения обработчик будет вызван автоматически.
onclearedСобытие активируется при полном очищении значения поля.
Пример:
Inputmask("(999) 999-9999", {
oncleared: function () {
console.log("Телефон удалён");
}
}).mask("#phone");
Если пользователь удалит весь номер:
(123) 456-7890 → пустое значение
то выполнится oncleared.
onincompleteonincomplete вызывается при наличии частично заполненной
маски.
(123) ___-____
oncleared вызывается только при полном отсутствии
пользовательских данных.
(___) ___-____
oncompleteoncompleteСрабатывает при полном заполнении маски.
Inputmask("9999", {
oncomplete: function () {
console.log("Маска заполнена");
}
});
onclearedСрабатывает при полном удалении содержимого.
Inputmask("9999", {
oncleared: function () {
console.log("Маска очищена");
}
});
Обработчик получает объект события и экземпляр маски.
Inputmask({
oncleared: function (event, buffer, opts) {
console.log(event);
console.log(buffer);
console.log(opts);
}
}).mask("#field");
eventDOM-событие.
bufferТекущее содержимое буфера маски.
optsКонфигурация текущей маски.
Inputmask("99/99/9999", {
oncleared: function (event, buffer) {
console.log(buffer);
}
}).mask("#date");
После очистки буфер может выглядеть так:
[
"_", "_", "/", "_", "_", "/", "_", "_", "_", "_"
]
Один из наиболее распространённых сценариев — удаление сообщений об ошибках.
Inputmask("+7 (999) 999-99-99", {
oncleared: function () {
document.querySelector("#error").textContent = "";
}
}).mask("#phone");
Inputmask("9999 9999 9999 9999", {
oncleared: function () {
const field = document.querySelector("#card");
field.classList.remove("valid");
field.classList.remove("invalid");
}
}).mask("#card");
Inputmask("999999", {
oncleared: function () {
document.querySelector("#city").value = "";
document.querySelector("#street").value = "";
}
}).mask("#postal");
Inputmask("+7 (999) 999-99-99", {
oncleared: function () {
document.querySelector("#submit").disabled = true;
}
}).mask("#phone");
Inputmask("9999", {
oncleared: () => {
console.log("Поле очищено");
}
}).mask("#code");
Однако классическая функция предпочтительнее, если требуется доступ к
контексту this.
thisInputmask("9999", {
oncleared: function () {
console.log(this);
}
}).mask("#field");
this содержит DOM-элемент поля ввода.
oncleared может вызываться не только действиями
пользователя, но и программной очисткой.
const input = document.querySelector("#phone");
input.inputmask.setValue("");
или:
input.value = "";
input.dispatchEvent(new Event("input"));
Inputmask({
mask: [
"+7 (999) 999-99-99",
"+1 (999) 999-9999"
],
oncleared: function () {
console.log("Значение удалено");
}
}).mask("#phone");
Событие работает независимо от выбранного шаблона.
clearIncompleteОпция clearIncomplete автоматически очищает
незавершённую маску при потере фокуса.
Inputmask("9999", {
clearIncomplete: true,
oncleared: function () {
console.log("Неполная маска очищена");
}
}).mask("#code");
Пример:
12__
После blur поле будет очищено, а oncleared
— вызван.
nullableInputmask("99/99/9999", {
nullable: true,
oncleared: function () {
console.log("Поле стало null");
}
}).mask("#date");
Inputmask("+7 (999) 999-99-99", {
oncleared: function () {
formState.phone = null;
}
}).mask("#phone");
useEffect(() => {
Inputmask({
mask: "+7 (999) 999-99-99",
oncleared: function () {
setPhone("");
}
}).mask(inputRef.current);
}, []);
mounted() {
Inputmask({
mask: "9999",
oncleared: () => {
this.code = "";
}
}).mask(this.$refs.code);
}
ngAfterViewInit(): void {
Inputmask({
mask: "99/99/9999",
oncleared: () => {
this.date = null;
}
}).mask(this.input.nativeElement);
}
Inputmask("999999", {
oncleared: async function () {
await fetch("/api/reset", {
method: "POST"
});
}
}).mask("#token");
Inputmask("+7 (999) 999-99-99", {
oncleared: function () {
localStorage.removeItem("phone");
}
}).mask("#phone");
Inputmask("9999", {
oncleared: function () {
console.log("Пользователь удалил значение");
}
}).mask("#pin");
Inputmask("9999", {
oncleared: function () {
document.querySelector("#details").value = "";
}
}).mask("#code");
Inputmask("9999", {
oncomplete: function () {
console.log("Заполнено");
},
onincomplete: function () {
console.log("Незаполнено");
},
oncleared: function () {
console.log("Очищено");
}
}).mask("#field");
autoUnmaskInputmask("9999", {
autoUnmask: true,
oncleared: function () {
console.log("Поле очищено");
}
}).mask("#code");
При очистке возвращается пустое немаскированное значение.
Inputmask("decimal", {
radixPoint: ".",
oncleared: function () {
console.log("Число удалено");
}
}).mask("#price");
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
oncleared: function () {
console.log("Дата очищена");
}
}).mask("#date");
Inputmask({
alias: "email",
oncleared: function () {
console.log("Email удалён");
}
}).mask("#email");
oncleared: function () {
preview.innerHTML = "";
}
oncleared: function () {
submit.disabled = true;
}
oncleared: function () {
errorBox.textContent = "";
}
oncleared: function () {
results.innerHTML = "";
}
Причины:
.value;input;Inputmask различает:
__
и
""
oncleared реагирует именно на отсутствие
пользовательских данных.
Inputmask("9999", {
oncleared: function () {
console.log(this.inputmask.unmaskedvalue());
}
}).mask("#field");
Результат:
""
Inputmask("+7 (999) 999-99-99", {
oncleared: function () {
validator.resetField("#phone");
}
}).mask("#phone");
Inputmask("+7 (999) 999-99-99", {
clearIncomplete: true,
oncomplete: function () {
this.classList.add("valid");
},
onincomplete: function () {
this.classList.add("invalid");
},
oncleared: function () {
this.classList.remove("valid");
this.classList.remove("invalid");
document.querySelector("#status").textContent =
"Поле очищено";
}
}).mask("#phone");
onclearedОбработчик oncleared особенно важен в интерфейсах с
активной динамикой:
Событие позволяет точно определить момент удаления данных и синхронизировать пользовательский интерфейс с текущим состоянием маски.