【发布时间】:2017-12-04 03:35:57
【问题描述】:
我想将表单提交延迟 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="">
【问题讨论】:
-
您可以检查 jQuery
.delay()选项。它可能会帮助你。 api.jquery.com/delay -
“我在哪里可以将逻辑添加到 setTimeout?” – 你似乎在这里使用了某种插件 (
ajaxForm),它设置了所有必要的事件处理程序本身。因此,除非该插件明确提供了一种实现您想要的方法(不太可能),否则在它之上实现它可能会相当棘手。如果您编写自己的代码来设置自己的表单提交处理程序,这会容易得多。 -
当您使用
ajaxForm()时,您已经失去了对表单提交和正在发送的 AJAX 请求之间关系的控制。这意味着您不能使用当前逻辑延迟请求。您需要使用$.ajax手动连接AJAX 请求。然后您可以将该调用包装在setTimeout()