2010-11-18 61 views
3

偵聽輸入文本字段更改的最受推薦方法之一是將該字段綁定到鍵盤事件。這在大多數情況下工作正常。但有些情況下這不起作用。例如,在Firefox中,有一個選項,當文本已被選中時,使用上下文菜單將其刪除。這不會觸發關鍵事件。這樣做時,我還沒有發現任何針對該文本字段的事件。 任何建議如何我可以對此作出反應(純Javascript或jQuery)?偵聽輸入值的刪除

回答

8

查看oninput事件,並且我寫下了它here

oninput觸發所有形式的文本輸入 - 包括剪切,粘貼,撤銷,重做,清除,拖放和拼寫更正。這是一個HTML 5事件,它在Internet Explorer 8及更低版本中不受支持(但它在最新的IE 9預覽版中)。但是,Internet Explorer支持所有DOM對象上的專有事件 - onpropertychange。只要輸入元素的值發生變化就會觸發。

我沒注意到你已經標記了 —既然你做了,可能值得一提的是我寫了一個插件來實現事件跨瀏覽器。你可以找到它here

+0

你有這個問題縫合起來,我想。 – 2010-11-18 11:00:55

+0

@Tim:哈哈,我當然在嘗試:-) – 2010-11-18 11:02:15

+0

@Tim:除了他在博客文章中提到的bug之外,是的。 – 2010-11-18 11:02:32

0

最好的方法是將該值存儲在focus事件中,並重新檢查blur事件的值。傾聽關鍵事件會激發很多通常冗餘的流程。大多數情況下,當用戶完成輸入(或刪除)時,您只會對字段值產生興趣。

這項工作跨瀏覽器,但委託焦點/模糊可能是一些瀏覽器的問題。最簡單的方法是直接將模糊/焦點偵聽器應用於元素。

只有異常是像autosuggest/complete這樣的實現,即使這樣你也可能想要反彈鍵輸入,所以它只會在用戶閒置幾百毫秒時觸發。