2014-11-14 2 views
2

1 초 후에 사용자가 숫자를 입력 할 때 setTimeout 함수를 호출 할 수 있기를 원합니다.setTimeout 함수가 이벤트와 연결

하지만 사용자가 1 초 미만의 시간에 200처럼 3 번호를 입력 할 때이 이벤트가 예를 들어 한 번만 호출됩니다 원하는 문제.

사용자가이 코드라는 것을 원하는 200 그래서

$('input.amount').on('input.amount',function(e){ 

     setTimeout(function() { 
      // code 
     }, 1000); 
    }); 

처럼 3 개 개의 숫자를 입력하면 아래에 내 코드가 3 시간이라고

한 번만

당신이 알려주는 변수를 유지 할 수 있습니다

답변

1

한 가지 방법은 지금 작동 도움을 마지막 입력

var timer; 
$('input.amount').on('input.amount', function (e) { 
    if (timer) { 
     clearTimeout(timer); 
    } 
    timer = setTimeout(function() { 
     // code 
     timer = undefined; 
    }, 1000); 
}); 
+0

도움을 주신 덕분에 사람도 작동합니다 ... – Youssef

+0

하지만 난 당신의 코드를 이해하지 못했습니다 : D – Youssef

+1

@ Youssef 그것은 두 번째 입력 이벤트가 발생하면 무엇입니까 첫 번째 시간 초과가 완료되면 첫 번째 시간 초과가 취소 된 다음 새로운 시간 초과가 생성됩니다. –

3

사용자가 이미 문자를 입력 한 경우 변수가 아직 설정되지 않은 경우에만 함수를 트리거하십시오. 예를 들어 : 내가 걸릴 것

var started = false; 
    $('input.amount').on('input',function(e){ 
     if(!started){ 
      started = true; 
      setTimeout(function() { 
       // code 
       started = false;//to reset so that further typing will trigger again 
      }, 1000); 
     } 
    }); 
+0

덕분에 남자 후 1000MS 후까지 실행을 지연하는 것입니다 – Youssef

+0

솔루션에 대한 답변입니다) 내 질문하지만 @ArunPJohny의 솔루션을 볼 때 사용자가 입력에 값을 입력하는 데 5 초 걸리는 경우에도 이벤트가 마지막 입력까지 실행되지 않기 때문에 더 적절합니다 – Youssef

관련 문제