Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как деактивировать кнопку после одного нажатия (https://javascript.ru/forum/jquery/78102-kak-deaktivirovat-knopku-posle-odnogo-nazhatiya.html)

AnGera 26.07.2019 20:55

как деактивировать кнопку после одного нажатия
 
Доброго времени суток! Есть одна задача, прошу помощи с решением. При нажатии на кнопку по отправке запроса на сервер выходит alert, который говорит, что сообщение отправлено ну и т.д.. В скрипте установлено время обработки запроса, но он не всегда помогает, особенно если сервер долго грузиться. Т.е. в этот момент пользователь может 30 раз нажать на кнопку и запрос обработается 30 раз и alert тоже выйдет 30 раз. Так вот вопрос: как прописать код, чтобы запрос был только один, или чтобы кнопка после одного нажатия деактвировалась?
Вот сам код:
$(document).ready(function() {

	$(".button, .reserve").magnificPopup();

	$("#phone").mask("+7(799)999-99-99");

	$("#forma").submit(function() {

		$.ajax({
			type: "POST",
			url: "mail.php",
			data: $(this).serialize()
		}).done(function() {
			$(this).find("input").val("");
			alert("Спасибо! Ваша заявка принята! Скоро мы с вами свяжемся.");
			setTimeout(function() {
				$.magnificPopup.close();
			}, 1);

			$("#forma").trigger("reset");

		});
		return false;
	});


});

рони 26.07.2019 23:04

AnGera,
$(document).ready(function() {

	$(".button, .reserve").magnificPopup();

	$("#phone").mask("+7(799)999-99-99");
    var one;
	$("#forma").submit(function() {
        if(one) return false;
        else one = true;
		$.ajax({
			type: "POST",
			url: "mail.php",
			data: $(this).serialize()
		}).done(function() {
			$(this).find("input").val("");
			alert("Спасибо! Ваша заявка принята! Скоро мы с вами свяжемся.");
			setTimeout(function() {
				$.magnificPopup.close();
			}, 1);

			$("#forma").trigger("reset");

		});
		return false;
	});


});

AnGera 26.07.2019 23:39

Спасибо!
Я кстати тоже решил эту задачку.
я кнопке задал id=submit

и написал :
$(document).ready(function() {

	$(".button, .reserve").magnificPopup();

	$("#phone").mask("+7(799)999-99-99");

	$(".callme").on("click", (function() {
            $("#forma").submit(function() {
                $('#submit').attr('disabled', true); //добавил это значение
                $.ajax({
                     type: "POST",
                     url: "mail.php",
                     data: $(this).serialize()
                }).done(function() {
                     $(this).find("input").val("");
                     alert("Спасибо! Ваша заявка принята! Скоро мы с вами свяжемся.");
                     setTimeout(function() {
                            $.magnificPopup.close();
                     }, 1);

                     $("#forma").trigger("reset");

                });
                return false;
         });

    }));


});

laimas 26.07.2019 23:59

AnGera, устанавливать disabled кнопке до запроса и снимать после.


Часовой пояс GMT +3, время: 10:30.