Javascript 我可以在$.submit()内运行setTimeout/setInterval吗?

Javascript 我可以在$.submit()内运行setTimeout/setInterval吗?,javascript,jquery,Javascript,Jquery,我这样做对吗 var jForm= $("form:first"); jForm.submit(function( objEvent ) { setTimeout(somefunction(),500) }); 该表单用于使用不可见的iFrame上载文件。由于某种原因,上述尝试导致我进入了一个无限循环 我真的很想知道,在使用jQuery操作submit时,是否能够使用setTimeout调用函数 注:我之前提出过,但我想我的问题包含的信息太多了 您可能希望在函数末尾返回false以防止表单提交

我这样做对吗

var jForm= $("form:first");
jForm.submit(function( objEvent ) { setTimeout(somefunction(),500) });
该表单用于使用不可见的iFrame上载文件。由于某种原因,上述尝试导致我进入了一个无限循环

我真的很想知道,在使用jQuery操作submit时,是否能够使用setTimeout调用函数


注:我之前提出过,但我想我的问题包含的信息太多了

您可能希望在函数末尾返回false以防止表单提交,否则您将陷入竞争条件

提交表单后,页面将开始在其他地方导航(表单的操作)。除非停止表单提交,否则somefunction()可能不会执行,或可能无法完成执行

var jForm= $("form:first");
jForm.submit(function(objEvent) {
  setTimeout(somefunction, 500);
  return false; // Prevent form submission. Alternatively, you could call objEvent.preventDefault();
});

您可能希望在函数末尾返回false以防止表单提交,否则您将陷入竞争条件

提交表单后,页面将开始在其他地方导航(表单的操作)。除非停止表单提交,否则somefunction()可能不会执行,或可能无法完成执行

var jForm= $("form:first");
jForm.submit(function(objEvent) {
  setTimeout(somefunction, 500);
  return false; // Prevent form submission. Alternatively, you could call objEvent.preventDefault();
});
否则,您将立即调用somefunction并在500毫秒内执行结果


否则,您将立即调用某个函数并以500毫秒的速度执行结果,除非您阻止表单的默认提交操作,否则它将在
setTimeout
中的函数有时间运行之前由该默认操作提交

$('form:first').submit( function(e){
  e.preventDefault();
  setTimeout( someFunction, 500 ); // NOT setTimeout(somefunction(),500)
});
另外,不要在
setTimeout()
中调用函数。传递对函数的引用(如上所述)

坏的:

好:


除非您阻止表单的默认提交操作,否则在
setTimeout
中的函数运行之前,它将由该默认操作提交

$('form:first').submit( function(e){
  e.preventDefault();
  setTimeout( someFunction, 500 ); // NOT setTimeout(somefunction(),500)
});
另外,不要在
setTimeout()
中调用函数。传递对函数的引用(如上所述)

坏的:

好:


您似乎混淆了setTimeout和setInterval。setInterval创建了一个循环,因此如果您向setInterval传递一个本身调用setInterval的函数,那么您就是在自找麻烦。

您似乎混淆了setTimeout和setInterval。setInterval创建了一个循环,因此如果您将一个本身调用setInterval的函数传递给setInterval,您就是在自找麻烦。

如果您执行了
setTimeout(somefunction,500)
并避免了
eval
邪恶。或者
jForm.submit(function(objEvent){setTimeout(function(){somestatements…;},500)},那就更好了setTimeout(somefunction,500)
并且避免了
eval
evilness.or
jForm.submit(function(objEvent){setTimeout(function(){somestatements…;},500)},那就更好了在preventDefault()之后,如何允许窗体正常发布?在preventDefault()之后,如何允许窗体正常发布?
setTimeout( myfunc, 500 ); // function runs after 500 msec delay

setTimeout( function(){ // anonymous function, works fine
  do_this();
  do_that();
}, 500 ); 

setTimeout( function myfunc(){ // or name the function, easier for debugging
  do_this();
  do_that();
}, 500 );