设置ajax表格submisson的延迟

时间:2017-06-30 08:28:09

标签: jquery ajax

我希望将表单提交延迟2秒。我看到很多解决方案,但它们不适合我。我尝试使用setTimeout设置延迟但不能100%工作。下面是我的脚本和表单标签:我可以在哪里添加逻辑到setTimeout?

$("#leadForm${leadForm.index}").ajaxForm({
  beforeSubmit : function(arr) {
    $("#loadingSpan").show();
    $('#submitBtn').attr("disabled", "disabled");
  },
  success: function() {
    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push({
      'event' : 'formSubmissionSuccess',
      'formId' : 'leadForm${leadForm.productCode}'
    });
  },
  target : "#leadFormDiv${leadForm.index}"
});
<form action="/portal/individual/leads/form/product/${leadForm.productCode}/submit.do" id="leadForm${leadForm.index}" method="POST" commandName="leadForm" role="form" class="form-default form-dui" data-dui-form="">

3 个答案:

答案 0 :(得分:0)

从网站上的API,你可以这样做:

$("#leadForm${leadForm.index}").submit(function() { 
    $("#loadingSpan").show();
    $('#submitBtn').attr("disabled", "disabled");
    setTimeout(function(){
        $("#leadForm${leadForm.index}").ajaxSubmit({
            success: function() {
                window.dataLayer = window.dataLayer || [];
                window.dataLayer.push({
                   'event' : 'formSubmissionSuccess',
                   'formId' : 'leadForm${leadForm.productCode}'
                });
            },
            target : "#leadFormDiv${leadForm.index}"
        });
    }, 2000);
    // return false to prevent normal browser submit and page navigation 
    return false; 
});

答案 1 :(得分:0)

从此source

beforeSubmit :beforeSubmit 在表单提交之前调用回调函数。从回调中返回false将阻止提交表单。

我相信如果你可以在这里设置2秒超时它将等待2秒然后调用提交函数。

你可以尝试一下并检查它是否有效:

beforeSubmit : function(arr) {
           setTimeout(function(){ $("#loadingSpan").show();
           $('#submitBtn').attr("disabled", "disabled"); return true;}, 2000);
           }

答案 2 :(得分:0)

谢谢大家的回复。 将尝试在此处提出的其他解决方案,但是现在我尝试了下面的工作。

我在按钮点击时调用了以下功能。

  function sendFormWithDelay() {

    $('.spinner-action').show();
    $('#submitBtn').attr("disabled", "disabled");
    $('#submitBtn1').attr("disabled", "disabled");
    $('#backbutton').attr("disabled", "disabled");
    var id = setTimeout(function() {
        $("#leadForm${leadForm.index}").submit();

    },2000);//delaying the submit for 2 seconds so that ninja lead response is returned.

    return false;
}