@VladMokrousov

Чем отличаются события click по кнопке с атрибутом submit и событие submit на самой форме (мой проблемный код внутри)?

Привет, столкнулся с интересным поведением js. Мне нужно отправить комментарий на сервер после его валидации.

Когда js слушает событие click на кнопке с атрибутом submit, все проходит отлично (не смотрите на ответ сервера, главное, что выполняется и кусок кода с валидацией, и кусок кода с отправкой на сервер). Но когда вешаю обработчик события submit на саму форму, все начинает работать через одно место. В рабочем проекте проверок больше, и все выглядит хуже, чем в примере, но для демонстрации сойдет. https://codepen.io/VladMokrousov/pen/ZEQEGzg

То есть при использовании события submit код в функции с валидацией выполняется частично. Я не понимаю причину такого поведения. Порыскав в гугле, нашел только туманные мысли о том, что click выполняется быстрее submit и, если при submit валидация не проходит, все сразу летит к чертям.

Буду благодарен за разъяснение такого поведения.
P.S evt.preventDefault() пробовал в разных местах
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
Руководитель frontend направления, предприниматель
Click — универсальное событие, применимое ко всем элементам.
Submit — событие принятия формы.

И углубляться стоит начать, возможно, отсюда.

PS: и за перехват событий тоже, впрочем, если ты вешаешь preventDevault на клике кнопки, которая отправляет форму, то блокируешь цепочку событий, в том числе отправку формы, или переход по ссылке (если к ссылке применяешь).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы