监听输入文本字段更改的最佳推荐方法之一是将该字段绑定到按键事件。在大多数情况下,这样做很好。但有些情况下这是行不通的。例如,在Firefox中,当选择了文本时,可以使用上下文菜单将其删除。这并没有引发关键事件。在执行此操作时,我没有找到任何针对该文本字段触发的事件。 有什么建议我可以对此做出反应(在纯Javascript或jQuery中)?
答案 0 :(得分:8)
查看oninput
事件,然后我写下here。
oninput
会触发所有形式的文本输入 - 包括剪切,粘贴,撤消,重做,清除,拖放和拼写更正。这是一个HTML 5事件,在Internet Explorer 8及更低版本中不受支持(但它是最新的IE 9预览版)。但是,Internet Explorer支持所有DOM对象上的专有事件 - onpropertychange
。只要输入元素的值发生变化,就会触发。
我没有注意到你用jquery标记了 - 因为你做过,可能值得一提的是我写了一个插件来实现跨浏览器的oninput
事件。你可以找到它here。
答案 1 :(得分:0)
最好的方法是将值存储在focus
事件上,然后重新检查blur
事件的值。聆听关键事件会引发许多通常冗余的过程。大多数情况下,当用户输入(或删除)它时,您只对字段值感兴趣。
这适用于跨浏览器,但委托焦点/模糊可能是某些浏览器的问题。最简单的方法是直接将模糊/焦点侦听器应用于元素。
只有例外是autosuggest / complete这样的实现,即使这样你也可能想要去抖键输入,所以它只会在用户空闲几百毫秒时触发。