我已经实现了这个'locksubmit'插件http://blog.leenix.co.uk/2009/09/jquery-plugin-locksubmit-stop-submit.html,它将按钮的显示状态更改为禁用。 然后,我希望表单在发布到表单URL之前延迟几秒钟。JS/JQuery表单提交延迟?
一旦用户点击提交按钮,我需要添加或修改什么来延迟表单“发布”?
谢谢!
我已经实现了这个'locksubmit'插件http://blog.leenix.co.uk/2009/09/jquery-plugin-locksubmit-stop-submit.html,它将按钮的显示状态更改为禁用。 然后,我希望表单在发布到表单URL之前延迟几秒钟。JS/JQuery表单提交延迟?
一旦用户点击提交按钮,我需要添加或修改什么来延迟表单“发布”?
谢谢!
取消默认的表单提交行为,并启动超时的同时:
$('form').submit(function (e) {
var form = this;
e.preventDefault();
setTimeout(function() {
form.submit();
}, 1000); // in milliseconds
});
这应该是与locksubmit插件兼容。
在这里看到一个演示:http://jsfiddle.net/7GJX6/
我认为这是你在找什么 - 修改lockSubmit()
这样:
jQuery(':submit').lockSubmit(function(){
setTimeout(5e3); // fancy 5 seconds
});
而且随着选择对象:
jQuery(':submit').lockSubmit({
submitText: "Please wait",
onAddCSS: "submitButtons",
onClickCSS: "submitButtonsClicked"
},function(){
setTimeout(5e3);
}));
基本上JavaScript必须等待所有参数在执行正文之前解决。通过在参数期间设置超时,我们延迟了返回。
为什么这不会导致无限递归和表单提交? – jgivoni 2014-10-03 13:12:11
它不是递归的,因为'e.preventDefault()'并且使用'this.submit()'而不是'$('form')。submit()',这会导致无限循环。 – 2015-01-06 05:58:49
'this'和'$(this)'防止递归有什么不同? – 2015-08-21 13:55:25