2013-04-26 41 views
1

我想檢查輸入是否改變。問題是 - 如果生病使用以下代碼:在短暫的延遲「E」後如何檢查輸入值是否更改?

trigger.keyup(function() { 
    current_input = getSearchString(); 
    is_changed = (current_input != previous_input); 
    previous_input = current_input; 
}); 

該邏輯將打破時用戶將按下,例如,「Q」,(輸入值將是「QE」已經)首先釋放「Q」鍵。 previous_input將被設置爲「QE」。用戶釋放「E」鍵並且腳本比較相等的字符串。所以,當輸入實際上發生了變化時,對於我的腳本來說它不是。任何想法如何解決這個問題或者是否有任何不同的方式來做到這一點(不與html5事件'輸入')?

+1

'keydown''help here? – tymeJV 2013-04-26 13:20:41

+1

'onchange'告訴你它什麼時候改變。 – 2013-04-26 13:21:03

+2

onchange只在失去焦點時觸發 – 2013-04-26 13:22:50

回答

6

使用​​代替keyup,這樣,你是不是用戶是否釋放鍵依賴。

+0

啊,我感到困惑,因爲這部分與我的腳本中的其他邏輯相結合。是的,這將完全解決我的問題,謝謝:) – UnstableFractal 2013-04-26 13:24:21

+0

沒問題@smsteel樂於幫助!^_^ – Neal 2013-04-26 13:24:41

0

單靠關鍵事件並不是一個可靠的機制。例如:用戶粘貼剪貼板中的文本,或者如果他拖放文本到文本框中(是的,dnd適用於文本框)。

要考慮所有可能的渠道,您可以使用textchanged事件。詳情在這裏:http://zurb.com/playground/jquery-text-change-custom-event

$('#selector').bind('textchange', function (e, prevText) { 
    // do your stuff here 
}); 
+0

嗯,那麼你可以只聽'** change'和'keydown',不需要爲它添加插件... – Neal 2013-04-26 13:26:10

+0

@Neal - 錯!除非您按下輸入或失去焦點,否則「更改」不會觸發文本輸入。 – techfoobar 2013-04-26 13:26:38

+0

對!這裏你去:http://jsfiddle.net/maniator/7skY7/ :-)它顯示了什麼被粘貼到輸入:-)所有沒有額外的插件(這是超時的原因:http:// stackoverflow。 com/questions/2055224 /如何獲取該字段的粘貼事件值) – Neal 2013-04-26 13:38:24