Задать вопрос
@ZaxapKramer
Больной верстальщик

Как осуществить событие отправки формы (form.submit()) без перезагрузки страницы?

Делаю так:
document.getElementById("form").addEventListener('submit', function(e) {
    e.preventDefault();
    console.log("Form has submited");
});

document.getElementById("btn").addEventListener('click', function(e) {
    document.getElementById("form").submit(); // .submit(function(e){e.preventDefault()}) // .submit(false) - ничего не меняется...
})


При обычной отправке формы все в порядке. Тем не менее, при нажатии на кнопку все равно происходит перезагрузка страницы. Как решить эту проблему?
  • Вопрос задан
  • 5938 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
workDNK
@workDNK
Разработчик интернет-магазинов на 1С-Битрикс
Предполагаю, что в случае кнопки в данном случае нужно использовать не .submit(), а trigger("submit")
Тогда будет вызван верхний обработчик 'submit', который запретит отправку формы. Можно в конце обработчика еще написать
return false;

https://learn.javascript.ru/forms-submit
Чтобы отправить форму на сервер из JavaScript – нужно вызвать на элементе формы метод form.submit().
При этом само событие submit не генерируется. Предполагается, что если программист вызывает метод form.submit(), то он выполнил все проверки.


UPD

Не часто пользуюсь нативным js, а вышеуказанный код предназначен для jQuery
Проверил код, который ниже, работает.

<form id="form" method="GET">
	<input type="text"/>
	<button id="form-btn">Button</button>
</form>
<button id="btn">Button</button>


document.getElementById("form").addEventListener('submit', function(e) {
    e.preventDefault();
    console.log("Form has submited");
});
document.getElementById("btn").addEventListener('click', function(e) {
	var ev = new Event("submit");
    console.log("Btn click");
    document.getElementById("form").dispatchEvent(ev);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
06 дек. 2024, в 03:58
10000 руб./за проект
06 дек. 2024, в 02:20
5000 руб./за проект
06 дек. 2024, в 01:36
700 руб./за проект