settimeout & cleartimeout help - PullRequest
0 голосов
/ 30 мая 2011

Я довольно новичок в работе с javascript и jquery и не могу понять, что такое settimeout.

Что я пытаюсь сделать, это запустить таймер одним нажатием. Он будет перемещать страницу туда, где есть ввод для ввода электронной почты. Если через 20 секунд ничего не набирается, я хочу, чтобы он что-то сделал. Но если они что-то введут, я бы хотел, чтобы 20-секундный таймер сбрасывался на 20 секунд. И, наконец, если форма отправлена, я хочу, чтобы тайм-аут был отменен.

$('#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 Ответ

3 голосов
/ 30 мая 2011

Вам нужно сохранить возвращаемое значение из setTimeout где-нибудь, чтобы отменить его позже:

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