2012-05-09 2 views
17

입력 키 업 이벤트에서 데이터베이스 정보를 추출하는 간단한 스크립트를 코딩하고 있습니다.jquery가있는 마지막 키 이후의 키 입력

내가 가진 문제는 KeyUp 이벤트가 항상 키마다 사용자를 눌러 반복된다는 점이다. 마지막 키를 누른 후에 만 ​​어떻게 작동합니까?

나는 내가 매의 keyup 후()에서는 setTimeout과 같은 기능을 사용한다고 생각합니다,하지만 난 당신이 나 간단한 예를하시기 바랍니다 할 수있는 방법 ... 몰라? 내 나쁜 영어 : 여기

죄송

는 내가 일을하려고했다 무엇 :

$("input").keyup(function() 
{ 
    var timer=setTimeout(function() { 
    }, 1000); 
    if(!timer) 
    { 
     //do .post ajax request 
    } 
}); 

답변

36
var timer; 

$("input").on('keyup', function() { 
    clearTimeout(timer); //clear any running timeout on key up 
    timer = setTimeout(function() { //then give it a second to see if the user is finished 
     //do .post ajax request //then do the ajax call 
    }, 1000); 
}); 
+0

감사합니다. – Zippie

6

당신은 기본적으로 거기. 다른 문자를 입력하면 타이머를 지울 필요가 있습니다. 그렇지 않으면 콜백은 타이핑을 계속하는지 여부에 관계없이 1000ms 후에 실행됩니다. 이 같은

뭔가 작동합니다 : 난 그냥 경고를

$("input").keyup(function (event) 
{ 
    var self = this; 
    if (self.timer) 
     clearTimeout(self.timer); 

    self.timer = setTimeout(function() 
    { 
     self.timer = null; 
     alert(self.value); 
    }, 1000); 

}); 

, 당신은 다시 서버로 쓰기 위해 아약스 코드를 넣어 것입니다.

0

난 당신이 onchange를 이벤트와 함께이 작업을 수행 할 경우 시간 간격 검사를 넣을 필요가 없다 생각합니다. 당신이 당신의 입력을 완료하고 초점을 바꿀 때마다. 당신을 위해 onchange 이벤트를 발생시킵니다.

$("input").onchange(function() 
{ 
    //extract database info 
}