2011-02-24 97 views

回答

21

取消默认的表单提交行为,并启动超时的同时:

$('form').submit(function (e) { 
    var form = this; 
    e.preventDefault(); 
    setTimeout(function() { 
     form.submit(); 
    }, 1000); // in milliseconds 
}); 

这应该是与locksubmit插件兼容。

在这里看到一个演示:http://jsfiddle.net/7GJX6/

+6

为什么这不会导致无限递归和表单提交? – jgivoni 2014-10-03 13:12:11

+2

它不是递归的,因为'e.preventDefault()'并且使用'this.submit()'而不是'$('form')。submit()',这会导致无限循环。 – 2015-01-06 05:58:49

+0

'this'和'$(this)'防止递归有什么不同? – 2015-08-21 13:55:25

0

我认为这是你在找什么 - 修改lockSubmit()这样:

jQuery(':submit').lockSubmit(function(){ 
    setTimeout(5e3); // fancy 5 seconds 
}); 

而且随着选择对象:

jQuery(':submit').lockSubmit({ 
    submitText: "Please wait", 
    onAddCSS: "submitButtons", 
    onClickCSS: "submitButtonsClicked" 
},function(){ 
    setTimeout(5e3); 
})); 

基本上JavaScript必须等待所有参数在执行正文之前解决。通过在参数期间设置超时,我们延迟了返回。