Функция формы работала, пока на странице не появился другой блок
Один и тот же именованный колбэк формы Тильда вызывает по-разному: если на странице доступен jQuery, аргумент оборачивается в jQuery; если библиотеки нет, передаётся обычный DOM-элемент формы. Поэтому код способен сломаться после добавления совершенно другого блока, который принёс или убрал jQuery. Безопасный обработчик сначала нормализует аргумент, а затем работает с одной формой.
Короткий ответ
Приведите аргумент к DOM-форме в первой строке и проверяйте результат. Не пишите
весь обработчик под $form.find(...), если не управляете загрузкой jQuery.
function afterLead(arg) {
const form = arg instanceof HTMLFormElement ? arg : arg && arg[0];
if (!form) {
console.error('afterLead: форма не найдена');
return;
}
const email = form.querySelector('[name="Email"]');
// Дальше работаем только с DOM API.
}
Почему поломка кажется случайной
Вы не меняли форму. Вы добавили слайдер, магазин или старый блок — и на странице
изменился набор библиотек. В одной сборке глобальный jQuery есть, в другой нет.
Тильда выбирает аргумент в момент вызова, поэтому старый обработчик внезапно
получает другой тип.
Как диагностировать
Откройте опубликованную страницу, инструменты разработчика и вкладку Console. Запустите реальную тестовую отправку. Если своя часть не сработала, но родное сообщение об успехе появилось, ищите ошибку с именем вашей функции.
Не проверяйте только так:
console.log(arg);
В консоли jQuery-объект и элемент могут выглядеть похоже. Печатайте явные признаки:
console.log({
isForm: arg instanceof HTMLFormElement,
first: arg && arg[0],
jquery: Boolean(window.jQuery),
});
Правило для передачи проекта
У пользовательской функции должен быть описан вход: что она принимает, когда запускается и где пишет ошибку. Тогда добавление нового блока не превращается в археологию по чужому коду.