2010-06-20 71 views
9

是否有一個跨瀏覽器方式來檢測輸入字段的實時更改跨瀏覽器JavaScript輸入實時更改/粘貼檢測

通過,我的意思不是當領域失去了重點,而不是在下一個按鍵,等等。立即或類似的東西。 jQuery和.change().keyup().bind('paste')的等我

使用組合可以得到一些瀏覽器中工作生活的變化的檢測,但並非所有。使用不同的組合可以使其在其他瀏覽器中有所作用。

獲得工作的最棘手的事情是輸入字段的鼠標操作 - 選擇文本,然後移動它(這基本上是剪切和粘貼),右擊並粘貼或切割等出於某種原因,甚至.mousedown().mouseup()似乎並沒有削減它。

我現在能想到的唯一的跨瀏覽器解決方案是每隔100毫秒檢查一次輸入字段值並將該值與存儲值進行比較。 但是,當基於事件的解決方案如此接近時,這看起來像是過度殺傷了

有沒有這樣做的jQuery插件?還是有其他方法可以實現這一目標?

+0

的jQuery應該在這方面,對於那些瀏覽器和它們的版本在http://docs.jquery.com/Browser_Compatibility發現至少兼容跨瀏覽器;如果不是這種情況,我會建議你提交一個錯誤。 – azatoth 2010-06-20 15:36:30

+0

@aza我不確定使用哪個jQuery事件助手來實現我想要的(對輸入字段的值進行任何更改的立即更新),因爲當輸入字段丟失時會激發'.change()'焦點。你知道嗎? – javascripteroo 2010-06-20 21:23:36

+0

這裏描述一個簡單的解決方案: http://whattheheadsaid.com/2010/09/effectively-detecting-user-input-in-javascript – biziclop 2011-07-29 08:14:58

回答

2

要完成更改和關鍵處理程序,可以添加cut/copy/paste的處理程序。他們在Firefox> = 3,IE,Safari和Chrome(但不在Opera/Konqueror中)工作。

是否涵蓋您的用例的所有內容?

+0

看起來很有希望。雖然沒有檢測到IE8中的拖放更改。謝謝,將進一步調查。 '傳統'事件附加方法是'elm ['onchange'] = fn'? – javascripteroo 2010-06-20 15:42:30

+0

@javascripteroo:很高興知道,關於IE8。是的,這是傳統模式(與elm.onchange = fn相同),更多信息在這裏:http://www.quirksmode.org/js/events_tradmod.html – 2010-06-20 15:59:54

1

根據您需要支持的瀏覽器,您可能會使用HTML5的oninput
當受監視的輸入發生變化時,它會立即觸發。在jQuery的你只是做:

$('#my-input').bind('input', function(e) { 
    console.log("#my-input's value changed"); 
}); 
+1

'oninput'瀏覽器支持:http://blog.danielfriesen。名稱/ 2010/02/16/HTML5的瀏覽器的迷宮oninput支持/ – Dan 2011-10-02 13:35:25