2014-02-17 121 views
0

我有關於如何檢查輸入文本更改時間的問題?我用​​這樣的:更改文本時檢查輸入

$('#query').keydown(function() { 
    console.log($(this).val()); 
}); 

但是當實際值query,控制檯將被記錄quer。它總是延遲。我不知道爲什麼?

回答

3

有3種方法來實現它。

第一種方法是使用其他事件,如inputpropertychange。請注意,僅在IE上支持propertychange,在現代瀏覽器上支持input

$('#query').on('input perpertychange', function() { 
    console.log($(this).val()); 
}); 

第二種方式是把console.log($(this).val());setTimeout聲明。你可以得到你正在輸入的內容。 (原因?我很抱歉,我真的不知道爲什麼,只是使用它);

$('#query').keydown(function() { 
    var query = $(this); 

    setTimeout(function() { 
     console.log(query.val()); 
    }, 0); 
}); 

,最後一個是用textchange事件(http://zurb.com/playground/jquery-text-change-custom-event)。就像這樣:

$('#query').on('textchange', function() { 
    console.log($(this).val()); 
}); 
+0

它與我合作(第二種解決方案)。謝謝! – Eddy

2

此處不要使用​​,而是使用keyup,以便在您收到事件時輸入值已更改。

請參閱processing of key events上的MDN。

+0

我想要得到的文本時使用按下按鈕(這意味着在按下,只漲不按鈕) – Eddy

+0

文本當用戶按下按鈕並沒有改變,瀏覽器沒有如果您釋放密鑰,文字將如何改變的想法。爲了模擬後面會發生什麼,您可以將鍵插入光標的位置,但這不是正確的方法。你的目標是什麼? –

+0

我創建了一個自動完成功能,可以在用戶打字時檢測到,我將向服務器發送請求,並且它必須是實時的! – Eddy

2

可以使用keyup event

$('#query').keyup(function() { 
    console.log($(this).val()); 
}); 
+0

但是當我按下按鈕但不按下按鈕時,就沒有日誌。 – Eddy

0

您可以使用.change()

$('#query').change(function() { 
    console.log($(this).val()); 
}); 
+1

當你模糊輸入時,'change'事件將被觸發! – ducdhm