2012-02-21 18 views
0

Webページに次のJavascriptコード(jQuery付き)があります。ユーザーがテキストフィールドに入力すると、アプリケーションはフィールドに値があれば何かします。ユーザーが削除キーまたはバックスペースキーを押しているために空です。私が持っているコードは次のようになります。Javascriptのキーイベント実行順序

$('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

「キープレス」イベントが発生した後、私は思います。 * edit * oops no do not – Pointy

+1

"キーアップコールバック関数が実行され、 'テキストフィールドのテキストがログに記録されない' - 複数回試してみました。 http://jsfiddle.net/skram/uH4H3/1/ –

答えて

0

あなたはタイムアウトを設定できます。

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