6

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

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

    // requesting my data..


}); 

我怎样才能做到这一点?

4

4 回答 4

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立即返回以取消提交事件。否则(如果当前是true)将标志设置为false,设置超时以在 5 秒后将标志改回,然后继续使用现有的提交代码。

于 2013-04-11T13:08:21.963 回答
2
$("#updatestock_form").submit(function(e){
    $(this).unbind("submit")
    $("#submitButton").attr("disabled", "disabled")
});

很简单。

于 2013-04-11T13:06:56.547 回答
0

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

于 2013-04-11T13:07:51.993 回答
0

在按钮的 onclick 事件上禁用按钮

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

并在成功操作后删除禁用属性

于 2013-04-11T13:09:36.690 回答