На инпут повешено два обработчика для чтения итогового содержимого и посимвольной валидации.
let tel;
$("#tel")
.on("change", function (e) {
tel = e.target.value;
return tel;
})
.on("input", function (e) {
e.target.value.replace(/[\s\-]/g, "");
if (
e.target.value.match(
/^((\+?3)?8)?((0\(\d{2}\)?)|(\(0\d{2}\))|(0\d{2}))\d{7}$/
) != null
) {
$(".captcha-overlay, .captcha-alert").hide("fast");
} else {
$(".captcha-overlay, .captcha-alert").show("fast");
}
});
Дальше, в зависимости от определённых условий, у этого же инпута должен поменяться набор атрибутов. И нужно, чтобы убрались обработчики, установленные на этом элементе, когда были ещё другие атрибуты. Метод off(), в данном случае, не срабатывает, они всё ещё весят на инпуте с новым набором атрибутов
$("input:not(#try)").show("fast").val("").attr({
id: "flashcall-code",
name: "flashcall-code",
placeholder: "[%t:4 цифры входящего:t%]",
onfocus: "hideError()",
}).off("change input");