javascript form.submit() 方法中的 setTimeout 不起作用
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15407091/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
setTimeout in form.submit() method does not work
提问by George Mickleburgh
I am trying setTimeout()function in form submit. However before executing the function the form gets submitted and anything inside the timeout function is not getting executed. Below is the code snippet.
我正在尝试setTimeout()表单提交中的功能。然而,在执行该函数之前,表单被提交并且超时函数中的任何内容都没有被执行。下面是代码片段。
$(window).load(function () {
$("#myform").submit(function() {
setTimeout(function(){
alert("me after 1000 mili seconds");
return false;
}, 1000);
});
};
Kindly help me on how to resolve this issue...
请帮助我如何解决这个问题...
回答by karaxuna
$(window).load(function () {
var submit = false;
$("#myform").submit(function(e) {
setTimeout(function(){
alert("me after 1000 mili seconds");
submit = true;
$("#myform").submit(); // if you want
}, 1000);
if(!submit)
e.preventDefault();
});
};
回答by BenM
The form is submitting straight away. You need to delegate the default action. This should work for you:
表单立即提交。您需要委托默认操作。这应该适合你:
$(window).load(function () {
$("#myform").submit(function(e) {
e.preventDefault();
setTimeout(function(){
alert("me after 1000 mili seconds");
}, 1000);
});
});
Please see this jsFiddle demo.
请参阅此jsFiddle 演示。
回答by George Mickleburgh
If you want to disable the submit action on the form, you could try:
如果您想禁用表单上的提交操作,您可以尝试:
$(window).load(function () {
$("#myform").submit(function(e) {
e.preventDefault();
setTimeout(function(){
alert("me after 1000 mili seconds");
return false;
}, 1000);
});
});
回答by Devang Rathod
First of all you forgotten closing brace )in last line
首先你忘记)了最后一行的大括号
$(window).load(function () {
$("#myform").submit(function(e) {
e.preventDefault();
setTimeout(function(){
alert("me after 1000 mili seconds");
return false;
}, 1000);
});
});
^---- here you forgotten to put brace.

