2014-08-29 98 views
-3

我有以下功能挂钩到我的Wordpress插件。设置时间来执行Javascript函数?

function before_submit() { 
    document.getElementById('page-loader').style.display='block'; 
} 

该钩子在提交表单之前被调用。现在我想要做的是在实际提交表单之前将div ID page-loader保留特定秒数。我已经阅读了关于settimeout函数并尝试了一些东西,但我无法得到它的工作。我猜测settimeout函数是运行一定的秒数而不是运行它对于的秒数是否正确?

所以我想脚本有一个'运行时间',例如4秒。现在运行该脚本,并提交immidiately

尝试这样的形式,但它不工作:

function before_submit() 
{ 

function partA() { 
document.getElementById('page-loader').style.display='block'; 
    window.setTimeout(partB,1000) 
} 

function partB() { 
//let's go submit the form 
} 
} 

请帮助我。 非常感谢!

+0

不知道我知道你想要什么,但检查[的setInterval(http://www.w3schools.com /jsref/met_win_setinterval.asp)函数 – 2014-08-29 12:27:49

+1

你的意思是运行几秒钟?一旦你运行它,就是这样。 – 2014-08-29 12:29:44

+0

您是否通过Ajax提交表单?如果是这样,'setTimout'将不起作用,请使用回调函数 – Justinas 2014-08-29 12:30:05

回答

1

这是你要找的格式为:

// Note, in the fiddle, this is run during the window.onload event. 
var test = document.getElementById('test'); 

test.addEventListener('submit', function before_submit(e){ 
    document.getElementById('wait').style.display = 'block'; 

    setTimeout(function wait(){ 
     // After waiting for five seconds, submit the form. 
     test.submit(); 
    }, 5000); 

    // Block the form from submitting. 
    e.preventDefault(); 
}); 

http://jsfiddle.net/rmef40c5/

+0

非常感谢你的回复。我检查了jsfiddle,这确实是我想要的。然而,我试图以我的形式实现这一点,但无法使它像那样工作。我的表单id ='form11',我等待的div id是'page-loader'。如何在我的代码中实现这个?再次感谢! – RobbertT 2014-08-29 15:24:45

+0

你有没有注意到从'window.onload'事件中提到它? – 2014-08-29 15:29:56

+0

http://jsfiddle.net/rmef40c5/1/而upvote和标记为答案会很好。 ';)' – 2014-08-29 15:32:48

-1

它可能适用于您。 首先在Click按钮上调用before_submit函数,然后调用页面加载器的函数,然后几秒钟后它会提交表单。

<form action="asd.html" method="post" id="myForm"> 
<input type="button" onclick="before_submit()" /> 
</form> 

<Script> 
function before_submit() 
{ 
// document.getElementById('page-loader').style.display='block'; 
setTimeout(to_submit_form,5000); 
} 

function to_submit_form(){ 
alert("submit"); 
document.getElementById("myForm").submit(); 
} 

</script> 
+1

你会*不*使用'的setInterval()'。为什么你会每3秒连续重新提交表单? – 2014-08-29 12:39:21

+0

谢谢,但这是行不通的。 – RobbertT 2014-08-29 13:00:14

+0

对不起,再次检查这个..!(测试) – 2014-08-29 13:19:58

0

您必须防止默认行为,例如,与<input type="button" onclick="before_submit();return false;" />

+0

尝试添加,但它应该做什么?函数before_submit()需要哪些代码? – RobbertT 2014-08-29 13:59:47

+0

wormonic 2014-08-29 14:17:14

+0

由于某种原因,它只是提交表单,不起作用。 – RobbertT 2014-08-29 14:23:08