Задать вопрос
@Ruinevo
Frontend-developer, vue.js

Работает ajax обработчик для всех форм на странице. Как для одной формы сделать исключение?

У меня на сайте 3 формы. Успешно обрабатываются и отсылаются по общему обработчику. Необходимо, чтобы первая форма работала через свой обработчик ajax.

$(document).ready(function () {
    $("form").submit(function () {
        // Получение ID формы
        var formID = $(this).attr('id');
        // Добавление решётки к имени ID
        var formNm = $('#' + formID);
        $.ajax({ 
            type: "POST",
            url: 'mail.php',
            data: formNm.serialize(),
            success: function (data) {
                // Вывод текста результата отправки
                $(formNm).html(data); 
            },
            error: function (jqXHR, text, error) {
                // Вывод текста ошибки отправки
                $(formNm).html(error);         
            }
        });
        return false;
    });
});


Как я понимаю, скрипт ищет все теги form и получает в переменную их ID.

Как сделать, чтобы моя первая форма на сайте работала по другому обработчику. Пробовал добавлять:
var formIDfirst = $(this).attr('id');
        if ((formIDfirst != 'main-form')) {

не помогло. Очень прошу помощи. Спасибо
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Stalker_RED
@Stalker_RED
Самый простой способ - изменить селектор так, чтобы обработчик вешался только на вторые две.
Добавить к ним класс, например, и вместо $("form").submit(...) писать $(".myClass").submit(...)

Или, без добавления класса: $( "form:not(:eq(0))" ), но это хуже в плане поддержки и понимания что вообще происходит на странице.
пример: https://jsfiddle.net/L39uaxth/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы