Функция обратного вызова формы JQuery - PullRequest
3 голосов
/ 23 января 2012

Я боролся с тем, что, по моему мнению, является простой проблемой селектора JQuery, но я уже давно возился с этим и, похоже, не могу добиться желаемого результата.

У меня есть неупорядоченный список, содержащий несколько li, каждый из которых является родным по отношению к скрытому div, содержащему элемент формы; таким образом, у меня есть несколько форм на странице. Без использования идентификаторов или дополнительных классов я хотел бы иметь возможность «скрыть» или «slideUp» текущий «скрытый» элемент div после отправки соответствующей формы.

// if (data == "Спасибо за ваше представление. Представитель скоро свяжется с вами.") {'Закрыть форму, содержащую div'}

Любая помощь будет наиболее ценной. Актуальную версию сайта и выпуск можно посмотреть здесь: http://clients.jayjodesign.com/executive-council/staging/events.php

1 Ответ

2 голосов
/ 23 января 2012

Вы используете $(this) в обработчике успеха метода post, где это не будет указывать на отправляемый form.Вы должны сохранить экземпляр this в локальной переменной, а затем использовать его в обработчике успеха.Попробуйте это

$(".event-form").submit(function(event) {
                var $form = $(this);
        var action = $form.attr('action'),
            $fields = $form.serializeArray();

        $.post(action, $fields, function(data, textStatus, xhr) {

            alert(data);

            if(data == "Thank you for your submission. A representative will contact you soon."){

                $form.parent('div.right-column').slideUp();

            }

        });

        return false;
    });
...