jQuery表单提交,防止在首次提交后多次发送

时间:2013-04-11 13:05:19

标签: javascript jquery submit delay

我正在制作一个使用jquery提交请求一些数据的web应用程序,但我不希望人们在第一次提交后多次提交表单。所以我想在提交之后,下一次提交什么都不做几秒钟。

$("#updatestock_form").submit(function(e){

    // requesting my data..


}); 

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:8)

  

“所以我希望在提交后,下一次提交几秒钟内什么都不做。”

如果您的意思是希望用户的第二次和后续提交尝试被忽略,直到经过一定的秒数后,您可以通过多种方式执行此操作。这是我想到的第一个:

var allowSubmit = true;
$("#updatestock_form").submit(function(e){
    if (!allowSubmit) return false;
    allowSubmit = false;
    setTimeout(function(){ allowSubmit = true; }, 5000);

    // your existing submit code here
    // requesting my data..
});

也就是说,有一个标志,指示当前是否允许提交。在提交事件上,如果该标志为false,则立即返回false以取消提交事件。否则(如果它当前是true)将标志设置为false,设置超时以在5秒之后将标志更改回来,然后继续使用现有的提交代码。

答案 1 :(得分:2)

$("#updatestock_form").submit(function(e){
    $(this).unbind("submit")
    $("#submitButton").attr("disabled", "disabled")
});

很简单。

答案 2 :(得分:0)

您正在提交ajax请求?因此,创建一些锁定变量var locked;并在提交时将其设置为locked = true;,并在ajax调用完成后将其重置为false。 (成功条件)

答案 3 :(得分:0)

按钮上的onclick事件禁用按钮

$("#buttonId").bind('click', function() { $(this).attr("disabled", "disabled"); });

并在成功操作后删除disabled属性

相关问题