JQuery AJAX формы отправки - несколько запросов на публикацию / получение, вызванные при сбое проверки - PullRequest
0 голосов
/ 05 мая 2010

У меня проблема в том, что если отправка формы (настроенная на отправку через AJAX) не проходит проверку, то при следующей отправке формы она удваивает количество почтовых запросов, что, безусловно, не то, чего я хочу. Я использую плагин jQuery ValidationEngine для отправки форм и привязки сообщений проверки к моим полям. Это мой код ниже. Я думаю, что моя проблема может заключаться в том, что я получаю атрибут действия формы через $ ('. Form_container form'). Attr ('action') - мне пришлось сделать это так, как используя $ (this) .attr подбирал атрибут действия первой загруженной формы - однако, когда я загружал новые формы на страницу, он не мог правильно подобрать действие новой формы, пока я не удалил селектор $ (this) и не сослался на него с помощью класса. Кто-нибудь может увидеть, что я могу делать здесь не так? (Обратите внимание, у меня есть 2 аналогичных обработчика форм, которые загружаются в Domready, что также может быть проблемой)

        $('input#eligibility').live("click", function(){
            $(".form_container form").validationEngine({
                ajaxSubmit: true,
                ajaxSubmitFile: $('.form_container form').attr('action'),
                success :  function() {
                    var url = $('input.next').attr('rel');
                    ajaxFormStage(url);
                },
                failure : function() {
                    //unique stuff for this form
                }
            });
        });
         //generic form handler - all form submissions not flagged with the #eligibility id
        $('input.next:not(#eligibility)').live("click", function(){
            $(".form_container form").validationEngine({
                ajaxSubmit: true,
                ajaxSubmitFile: $('.form_container form').attr('action'),
                success :  function() {
                    var url = $('input.next').attr('rel');
                    ajaxFormStage(url);
                },
                failure : function() {
                }
            });
        });

1 Ответ

1 голос
/ 05 мая 2010

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

После того, как validationEngine был связан, вам нужно убедиться, что вы не связываете его снова.


EDIT

ИЛИ сделать это:

    $('#eligibility').live("click", function(){
        $.validationEngine.submitForm($(".form_container form"),{
            ajaxSubmit: true,
            ajaxSubmitFile: $('.form_container form').attr('action'),
            success :  function() {
                var url = $('input.next').attr('rel');
                ajaxFormStage(url);
            },
            failure : function() {
            }
        });
        return false;
   });
   $('input.next:not(#eligibility)').live("click", function(){
        $.validationEngine.submitForm($(".form_container form"),{
            ajaxSubmit: true,
            ajaxSubmitFile: $('.form_container form').attr('action'),
            success :  function() {
                var url = $('input.next').attr('rel');
                ajaxFormStage(url);
            },
            failure : function() {
            }
        });
        return false;
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...