2012-02-21 3 views
0

내 웹 페이지에 다음과 같은 Javascript 코드 (jQuery 포함)가 있습니다. 사용자가 텍스트 필드에 입력하면 응용 프로그램에서 필드에 값이있는 경우와 응용 프로그램에서 한 가지 작업을 수행합니다. 사용자가 삭제 또는 백 스페이스 키를 눌러서 비어 있습니다. 내가 가진 코드는 다음과 같습니다자바 스크립트 키 이벤트 실행 순서

$('input#textInput').keyup(function(event) { 
    if($(this).val()) { 
     console.log('non-empty string in the text field'); 
    } 
    else { 
     console.log('no text in the text field'); 
    } 
} 

문제는 문자가 텍스트 필드에 표시되기 전에 콜백 함수가 실행처럼 보이는 것입니다. 필드가 비어 있고 'p'키를 누르면 keydown, keypress 및 keyup 이벤트가 생성되고 keyup 콜백 함수가 실행되고 '텍스트 필드에 텍스트가 기록되지 않습니다.'라는 메시지가 표시됩니다. 'p'문자가 텍스트 필드에 나타납니다. 이것은 내가 원하지 않는 것입니다.

키 이벤트 중 하나에서 콜백을 실행하고 텍스트 필드에 표시되는 값에 액세스하는 방법을 아는 사람이 있습니까? 감사.

+0

은 "키 누름"이벤트가 발생 후에, 나는 생각한다. * 편집 * 죄송합니다. – Pointy

+1

"키 콜백 함수가 실행되고 '텍스트 필드에 텍스트가 기록되지 않습니다.'라는 메시지가 나타납니다. - 여러 번 시도했는데 키패드의 경우"텍스트 필드에 비어 있지 않은 문자열 "이 출력되었습니다. http://jsfiddle.net/skram/uH4H3/1/ –

답변

0

당신은 시간 제한을 설정할 수 있습니다 :

$('input').keyup(function() { 
    var inp = this; 
    setTimeout(function() { 
    console.log(inp.value); 
    }, 0); 
}); 
관련 문제