2013-03-04 39 views
0

如何計時執行JQuery函數或事件?我不是指在超時後執行事件或功能。我想要的是,在20秒內捕獲鍵盤事件,而不是在20秒後捕獲鍵盤事件。我嘗試了幾個想法,但沒有按照我想要的方式工作。使用jquery執行計時事件

+1

什麼使用setTimeout解除某些事件li的綁定ke keyup? – 2013-03-04 08:07:54

+0

你能舉一個用例嗎 – 2013-03-04 08:08:42

+0

可否請你提供一個代碼示例。我嘗試過使用setTimeout,但只允許在設定時間後使用keyevents。但我希望能夠在未設定的時間內捕捉到關鍵事件。 – bdfios 2013-03-04 08:09:32

回答

0

您可以使用setInterval()

鑑於標記

<p>Interval: <span id="interval"></span></p> 
<p>Counter: <span id="counter"></span></p> 
<button id="start">Start</button> 

你可以做這樣的事情來捕捉keyup S代表20秒

$(function(){ 
    var counter = 0; 
    $("#start").click(function(){ 
     counter=0; 
     var startTime = new Date().getTime()/1000; 

     $("body").on("keyup", function(){ 
      counter++; 
      $("#counter").text(counter); 
     }); 
     var intId = setInterval(function(){ 
      currentTime = new Date().getTime()/1000; 
      timeInterval = currentTime - startTime; 
      $("#interval").text(timeInterval); 
      if (timeInterval >= 20) { 
       $("body").off("keyup"); 
       clearInterval(intId); 
      } 
     },1000); 
    }); 
}); 

這裏是jsFiddle

+0

非常感謝!這真的起作用!你搖滾! – bdfios 2013-03-04 09:13:18

+0

@bdfios很高興幫助。 – peterm 2013-03-04 09:29:13

0

嘗試

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript"> 
    var timer = 0; 

    $(function() 
    { 

     if(timer > -1 && timer <= 20) 
     { 
      timer = setTimeout(function() 
      { 
       timer = timer + 1; 
       alert(timer); 
      }, 1); 
     } 

    }); 

</script> 

,如果循環失敗,你可以unbind事件或任何你的要求了。

+0

感謝您的幫助。 – bdfios 2013-03-04 09:25:35