2012-02-21 105 views
0

我的網頁上有以下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

的「按鍵」事件觸發後,我想。 *編輯* oops不,它不是 – Pointy 2012-02-21 18:42:35

+1

「keyup回調函數得到執行,'文本字段中沒有文本'被記錄下來 - 我嘗試了多次,併爲keyup打印」非空字符串在文本字段「。 http://jsfiddle.net/skram/uH4H3/1/ – 2012-02-21 18:48:20

回答

0

您可以設置超時:

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