settimeout& cleartimeout帮助

时间:2011-05-30 02:24:22

标签: javascript jquery javascript-events delay settimeout

我对javascript和jquery很新,并且无法理解settimeout。

我正在尝试做什么,只需点击即可启动计时器。它会将页面滑动到输入电子邮件的输入位置。如果,在20秒内,没有任何类型,我希望它做一些事情。但如果他们确实输入了某些东西,我希望20秒计时器重置为20秒onkeyup。最后,如果表单已提交,我希望超时被取消。

$('#button').click(function(){
  $('#pane').scrollTo( '1000px', 500);
  setTimeout(goback, 20000);
  function goback() {
  $('#pane').scrollTo ('0px', 500);
  $('#input').keyup(function(){
    clearTimeout(goback);
    setTimeout(goback, 20000);
};
$('#submitemail').click(function(){
  //form submit stuff
  clearTimeout(goback);
});

请你指点我正确的方向......谢谢。

var timer;
$('#button').click(function(){
     $('#pane').scrollTo( '768px', 0 );
     $('#emailinput').delay(1000).focus();
     $('#slide2fadeout').css("display", "block").fadeOut();
     timer = setTimeout(goback, 20000);              //in 20 seconds start goback function
     function goback(){
         $('#like').scrollTo( '0px', 0 );            //scroll back to top
         $('#emailinput').val('');                   //clear any partial entry
     };
     $('#emailinput').keyup(function(){
         clearTimeout(timer);
         timer = setTimeout(goback, 20000);
     };
});

这是我的实际代码......似乎无法让它正常工作。任何帮助表示赞赏..谢谢。

1 个答案:

答案 0 :(得分:3)

您需要在某处保存setTimeout返回值,以便稍后取消:

var timer;
$('#button').click(function () {
    ...
    timer = setTimeout(goback, 20000);
    ...
    clearTimeout(timer);
}