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.orjForm.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 );