2014-08-29 69 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