我正在制作一个使用jquery提交请求一些数据的web应用程序,但我不希望人们在第一次提交后多次提交表单。所以我想在提交之后,下一次提交什么都不做几秒钟。
$("#updatestock_form").submit(function(e){
// requesting my data..
});
我怎样才能做到这一点?
答案 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属性