2012-04-04 58 views
5

我有一個jQuery事件處理反應的每一個變化在jQuery的輸入事件不火,如果輸入爲空

<input id="myId" type="text" /> 

元素:

$("#myId").bind('input', function (e) {  
     // Do Stuff 
    }); 

這完美的作品,除了當輸入在#myId是空的(例如,在輸入框中只有1個字符,我用Backspace將其刪除)。如果輸入變空,則該事件不會觸發。如果我然後輸入一個角色,事件就會發生。

這是一個已知的問題?難道我做錯了什麼?任何方式來獲得一個事件時,輸入變空了?

更新

當進入退格,至少在IE9將不會觸發事件AT ALL。

+1

當假設在事件被解僱?你不能使用'keyup'事件嗎? – elclanrs 2012-04-04 03:39:41

+0

oninput事件似乎沒有被廣泛使用,但似乎存在:https://developer.mozilla.org/en/DOM/window.oninput – j08691 2012-04-04 03:43:16

+1

僅供參考,「輸入」事件在IE6,7中不起作用8。 – jfriend00 2012-04-04 03:43:54

回答

8

據我所知,「輸入」不是你想要使用的事件。由於「輸入」類似於「變」,它往往會產生不好的結果,當你的字符串接近0字符,使用keyup代替

$("input#myId").bind('keyup', function (e) {  
    // Do Stuff 
}); 
+0

https://developer.mozilla.org/zh/DOM/window.oninput – j08691 2012-04-04 03:42:28

+0

啊,很有意思。謝謝 – Kristian 2012-04-04 03:43:02

+2

我可能在這裏錯了,但我不認爲你可以說keyup是「你想使用的事件」,因爲輸入,不像keyup,檢測ANY輸入,就像剪切和粘貼鼠標一樣。我們在這裏只是簡單地說firefox和IE不同意退格還是刪除應該算作「輸入」。我可以看到雙方......我的猜測是,埃裏克J.真的想要一個沒有等到元素像常規變化事件那樣失去焦點的情況下觸發的變化事件。我不知道這個問題的答案是什麼。 – ctb 2013-09-03 17:58:35