首页 > 解决方案 > Prevent Ajax form from being submitted twice?

问题描述

Hello looking for some help with my form here. How would I prevent " $(document).on('submit'..." getting triggered again when submitting it with " $(active_form)[0].submit();"?

Thanks!

  $(document).on('submit', active_form, function(e) {

        e.preventDefault();


        active_form = $('div.account-address-form.visible form');
        var vat_input = $('div.account-address-form.visible form input.vat_reg_no');
        var but_prim =  $('div.account-address-form.visible form .button-primary');

        if (vat_input.val()) {

            var url = "/apps/vat-check/";
            var number = vat_input.val();

            $.ajax({
                type: "GET",
                dataType: "jsonp",
                url: url,
                data: {
                    number: number
                },
                 beforeSend: function() {
                    but_prim.prop('disabled', true);
                    but_prim.css('opacity', '.4');
                  },
                success: function(data) {

                    var result = data.result;

                    if (result) {
                      
                      $.ajax({
                            type: "GET",
                            dataType: "jsonp",
                            url: "/apps/customer-vat/",
                            data: {
                                email: "{{ customer.email }}",
                                vat_no: number,
                                update: true
                            },
                            success: function(data) {

                              
                                $(active_form)[0].submit();
                                $(active_form).off("submit").submit();

标签: ajax

解决方案


 $(document).on('submit', active_form, function(e) {


        e.preventDefault();
      
       if(!active_form.attr('validated'))
{


        active_form = $('div.account-address-form.visible form');
        var vat_input = $('div.account-address-form.visible form input.vat_reg_no');
        var but_prim =  $('div.account-address-form.visible form .button-primary');

        if (vat_input.val()) {


            var url = "/apps/vat-check/";
            var number = vat_input.val();

            $.ajax({
                type: "GET",
                dataType: "jsonp",
                url: url,
                data: {
                    number: number
                },
                 beforeSend: function() {
                    // disabling button
                    but_prim.prop('disabled', true);
                    // set button
                   but_prim.css('opacity', '.4');
                  },
                success: function(data) {
                  
                    active_form.attr('validated',true);

                    var result = data.result;

                    if (result) {
                      
                      $.ajax({
                            type: "GET",
                            dataType: "jsonp",
                            url: "/apps/customer-vat/",
                            data: {
                                email: "{{ customer.email }}",
                                vat_no: number,
                                update: true
                            },
                            success: function(data) {

                               active_form.attr('validated',true);
                                $(active_form)[0].submit();

推荐阅读