1

我想弄清楚如何在用戶按下窗體上的提交按鈕幾秒鐘後運行一段代碼。我的測試頁正在等待適當的時間並正確執行代碼塊,但不是等待提交事件,它似乎是在頁面加載時啓動我的計時器。好像我沒有以正確的方式使用.addEventListener;有沒有人看到我的問題?我使用的是Firefox的最新版本,而不是IE6或類似的東西。addEventListener提交事件運行處理函數早

<html> 
<head> 
    <title>Listener Test</title>  
</head> 
<body> 
    <form id="travelInfo"> 
     Depart: <input type="text" name="depart" value="BWI" id="depart"><br /> 
     Arrive: <input type="text" name="arrive" value="LAX " id="arrive"><br /> 
     <input type="submit" name="submit" value="Send Form" id="Submit"> 
    </form> 

    <script type="text/javascript"> 
     window.addEventListener('submit', timeFunction(), true); 
     function timeFunction() 
     { 
      var t=setTimeout("handler()",3000); 
     } 
     function handler() 
     { 
      alert("Hello"); 
     }  
    </script> 
</body> 
</html> 

回答

4

更換

window.addEventListener('submit', timeFunction(), true); 

window.addEventListener('submit', timeFunction, true); 

見調用一個函數,在我other answer引用它的區別。

而不是做

setTimeout("handler()", 3000); 

發生超時時,將基本上可以eval'd

此外,你可以直接傳遞給handler函數的引用來的setTimeout。注意沒有引號和括號。

setTimeout(handler, 3000); 
+0

我曾試過,但是當我這樣做時,似乎該函數根本不會被調用,即使當我點擊提交按鈕時也是如此。思考? – Kladky 2012-01-18 21:39:21

+0

當您提交表單時,頁面會更改。 3秒後它不能顯示警報,因爲頁面已更改。 – 2012-01-18 21:40:26

+0

對,當然。謝謝! – Kladky 2012-01-18 21:44:11