@Programmir

Почему при новой отправке ajax запроса вызываются предыдущие?

Идет отправка формы на почту через ajax. После каждой отправки делаю reset формы. Потом не обновляю страницу и посылаю новые данные и в done повторяется отправка предыдущих заполненных полей. Например, если я пять раз отправил письмо, то при пятой попытке этот done выполняется пять раз, отправляя пять раз письмо с предыдущими полями. Как это исправить?
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
Потому, что по событию click создаётся новый обработчик события submit - который добавляется к уже существующим обработчикам и в котором фиксируются значение полей в момент срабатывания click.
Обработчик click вообще не нужен.
$("#sendzajav").submit(function (e) {
    e.preventDefault();

    var emailval = $("#email").val();
    var nameval = $("#name").val();
    var phoneval = $("#phone").val();

    if (ValidPhone(phoneval)) {
        $("#phone").removeClass("error");
    } else {
        $("#phone").addClass("error");
        return;
    }

    if (!inputlen(nameval.length, "name")) {
        return;
    }

    $("#sendzajav").val("Идет Отправка...");
    $.ajax({
        type: "POST",
        url: "mail.php",
        data: {"Имя": nameval, "Телефон": phoneval, "Почта": emailval}
    }).done(function () {
        alert("Спасибо за Вашу заявку!");
        setTimeout(function () {
            $('form').trigger("reset");
        }, 1000);
    });
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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