Я тоже столкнулся с той же проблемой, и я решил ее очень простым способом (может быть, это неправильно или существует что-то глючное, чего я не заметил, пожалуйста, сообщите мне, если вы узнали)
Вот мой ответ:
$submitButton.on('click', function(e) {
setTimeout(() => {
$(this).attr('disabled', '');
}, 0);
});
Основная проблема, с которой я столкнулся, заключалась в том, что, если бы я дважды щелкнул по своей исходной кнопке, он бы отправил запрос дважды и вызвал что-то непредсказуемое, поэтому я попытался заблокироватькнопка с атрибутом «отключен» сразу после нажатия на нее.Вот что я написал.
// !!this is an incorrect example!!
$submitButton.on('click', function(e) {
$(this).attr('disabled', '');
});
// !!don't copy this!!
Самая большая проблема, с которой я столкнулся, заключается в том, что если я просто отключу кнопку отправки сразу после нажатия на нее, запрос на отправку не будет отправлен, и страница будет просто зависать,ничего не происходит.
Я думаю, причина в том, что атрибут "disabled" не позволяет отправить запрос на отправку (хотя я понятия не имею, каковы отношения между этими двумя ...)
Итак, я думаю событие отключения должно быть выполнено после события submit.
Насколько я понимаю, отправка формы - это событие Javascript, а setTimeout - асинхронный метод.Поскольку Javascript выполняется на основе цикла событий , событие ajax будет помещено в конец квенэ события и будет выполнено только после завершения всех событий синхронизации.
В моем кодепосле первого щелчка кнопка отправки будет отключена через 0 миллисекунд, что невозможно для человека щелкнуть во второй раз, проблема решена!