2011-07-30 128 views
0

当我的函数(beginUpload())被调用时,我该如何延迟执行?我尝试了函数delay(),但函数在我的表单提交后仍然立即执行。我不希望函数在一段时间内反复执行。我只是想延迟执行一段时间。有人有主意吗?如何延迟函数调用?

<form action="testing12345.php" target="progressFrame" method="post" id="uploadform" enctype="multipart/form-data" onsubmit="beginUpload().delay(8000);"> 

回答

5

把它拿出你的DOM和使用的setTimeout:

HTML:

<form action="testing12345.php" target="progressFrame" method="post" id="uploadform" enctype="multipart/form-data"> 

JQuery的:

$('#uploadForm').submit(function(event){ 
    event.preventDefault(); // Prevent the actual form submission so the page remains. 
    var sub = setTimeout(function(){ 
     beginUpload(); 
    },8000); 
}); 
3

这应该做的伎俩:

setTimeout(beginUpload, 8000);return false;

您需要返回false阻止浏览器提交表单。

0

.delay不会阻止发生的提交。

onsubmit="setTimeout(beginUpload, 8000), return false;" 
+0

为什么downvote内以类似的方式? – Mrchief

+0

对不起,我没有让你失望。感谢您的贡献,我将您带回0大声笑。 – Scarface

+0

太多的懦夫在这里男人。 Thx的投票! – Mrchief

1

JavaScript setTimeout函数就是您所追求的。您可以在表单标签本身中调用它,例如

<form action="testing12345.php" target="progressFrame" method="post" id="uploadform" enctype="multipart/form-data" onsubmit="setTimeout(beginUpload(), 2000);"> 

,其中2000 =2秒

,或者你可以使用它的方法beginUpload