我希望将表单提交延迟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="">
答案 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;
}