2011-02-09 3 views
1

각 키 업을 호출하는 키 이벤트를 포착하고 있습니다.jquery keyboard pause catch

jQuery('#Search').keyup(function() { 

}); 

는하지만 난 때 사용자 지속적 종류의 문자와 같은 뭔가가 필요하고 그 시간은 내가 아약스 호출을 트리거 할 5 문자 또는 n 번째 문자에서 패스를했다. 여기서 우리는 타임 아웃 기능을 사용하여 이벤트를 잡을 수 있지만 각 키 누르기는 타임 아웃 기능을 다시 호출합니다.

그리고 잠시 후 다시 입력을 시작하면 다시 이벤트/아약스 호출이 발생하지만 특정 일시 중지 후에 만

다시 사용자가 검색을 시작한 이후 이전 이벤트 또는 ajax 호출을 중단해야합니다.

그래서 이전 호출을 중단하기 위해 .abort(); 함수를 사용했습니다.

jquery에서 특정 기간이 지나면 이벤트를 잡는 더 좋은 방법이 있습니까?

+0

사용자 정의 주저하고 hoverIntent jQuery 이벤트에서 이러한 블로그 게시물을 확인하고 싶을 수 있습니다. http://cherne.net/brian/resources/jquery.hoverIntent.html http://www.bennadel.com/blog/1786-Building-Custom-jQuery-Event-Types-Hesitate-Event.htm –

답변

4
var search = $('#Search'), 
    search_delay = 100; 


search.keyup(function() { 
    var request = search.data('request'); 

    if(request) { // if request is running - abort it 
     request.abort(); 
     search.data('request', null); 
    } 

    clearTimeout(search.data('timer')); // if timer is running - stop it 

    search.data('timer', setTimeout(function(){ 
     // add your ajax call here or pass a reference 
     // to the function that will handle the ajax call 
     search.data('request', $.ajax(...)); 
    }, search_delay); 

}); 

당신은 중지 할 수 있도록 타이머 abort 요청에와 할 수 있도록 intrduced jQuery를 1.5 jqXHR 객체에 대한 참조를 저장하는 JQ에게 data API를 사용하여 사전에

감사 나 조언을 바랍니다 타이머가 clearTimeout

+0

감사합니다. Tom, 나는 이것을 시도 할 것이다. – Elamurugan