2012-05-31 3 views
2

내가 가지고있는 문제는 사용자가 내 $("input#q) 필드에 적어도 100ms 동안 입력을 중단 한 후 내 doSearch() -method라고하는 검색 기능입니다.입력시 사용자 유휴 시간

나는이 answer의 논리를 사용하여이 작업을 시도했지만 setInterval()을 설정/해제해야하는 곳이 붙어있어서 idleTime을 증가시킵니다.

var idleTime = 0; 

$("input#q").keyup(function() { 
    idleTime = 0; 
    idleInterval = setInterval(function() { 
    idleTimeIncrement(); 
    }, 25); 
}); 

function idleTimeIncrement() { 
    idleTime += 25; 
    if (idleTime >= 100) { 
    doSearch($("input#q").val()); 
    } 
} 

내가 방화범 콘솔에서지고있어 오류가 말한다 :

너무 많은 재귀.

그래서 나는 당신이 새로 시작할 때 타이머를 재설정해야 내 코드에서 무한 루프 ... ;-)

+1

아래의 Ianzz의 답변을 참조하십시오. 다만 100ms는 매우 짧은 시간입니다. 더 많이 늘릴 수도 있습니다 (약 500 곡). – Archer

+0

조언 해 주셔서 감사합니다. 나는 500ms를 체크 아웃 할 것이다. – Seybsen

답변

8

을 가진 것 같아. 여기에 내가 무엇을 할 것인가 :

var timer = null; 
$('input#q').keyup(function() { 
    if (timer) { 
     clearTimeout(timer); 
    } 
    timer = setTimeout(function() { 
     doSearch($('input#q').val()) 
    }, 100); 
}); 
+1

"keyup", 모두 소문자 – Rob

관련 문제