Задать вопрос
@jekahm

Почему в Yii2 событие submit у формы происходит дважды?

Доброго времени суток!
Для перехвата события сабмита формы использую след. код (в качестве теста):
$(document).on("beforeSubmit", "#pm-form", function (event, messages) {
		var formdata = $(this).serialize();
		console.log(formdata);
		$(this).find(':submit').attr('disabled', true);
		return false;
	});

Но, несмотря на то, что при этом делаю кнопку сабмита неактивной, в консоли можно увидеть, что форма отправляется как минимум дважды при быстром клике на кнопку. То есть по сути вызов события beforeSubmit происходит с задержкой.
С чем это может быть связано? И можно ли это как-то пофиксить?
Заранее благодарен!
  • Вопрос задан
  • 1690 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
qonand
@qonand
Software Engineer
То есть по сути вызов события beforeSubmit происходит с задержкой.
С чем это может быть связано? И можно ли это как-то пофиксить?

beforeSubmit это лишь одно из событий вызываемых в процессе отправки формы в yii2. Пользователь нажимает кнопку сабмита - происходит валидация формы на js, и только после ее успешного прохождения генерируется событие beforeSubmit. Соотвественно валидация так же занимает какое-то время, это и приводит к такому результату. Если Вы хотите блокировать сабмит-кнопку делайте это при возникновении события beforeValidate
Ответ написан
@jekahm Автор вопроса
Еще один вариант по решению данной проблемы описан здесь https://github.com/yiisoft/yii2/issues/10498
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Я использую обычное js событие submit. Все нормально работает.
Совет на заметку: Использовать для отправки формы не сериализированную строку, а объект FormData.
Тут подробнее: https://learn.javascript.ru/xhr-forms
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽