2013-03-04 108 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