Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery表单提交,防止在首次提交后多次发送_Javascript_Jquery_Submit_Delay - Fatal编程技术网

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

Javascript jQuery表单提交,防止在首次提交后多次发送,javascript,jquery,submit,delay,Javascript,Jquery,Submit,Delay,我正在制作一个Web应用程序,它使用jquery提交请求一些数据,但我不希望人们在第一次提交表单后多次提交表单。所以我想在一次提交之后,下一次提交在几秒钟内什么也不做 $("#updatestock_form").submit(function(e){ // requesting my data.. }); 我怎样才能做到这一点 $("#updatestock_form").submit(function(e){ $(this).unbind("submit")

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

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

    // requesting my data..


}); 
我怎样才能做到这一点

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

非常简单。

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

“因此,我希望在提交后,下一次提交在几秒钟内不会执行任何操作。”

如果您的意思是希望用户的第二次和后续提交尝试被忽略,直到经过一定的秒数,那么您可以通过多种方式来完成。首先想到的是:

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秒后更改标志,然后继续使用现有提交代码。

单击按钮事件时禁用按钮

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

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

您可以删除或禁用submit按钮,或者您可以使用标志检查表单是否已发送,并且在几秒钟内为
setTimeout添加行
实际上这不起作用,您只需删除jQuery侦听器,不要阻止
表单
提交给你,这就是我一直在寻找的!