2010-11-18 54 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这样的实现,即使这样你也可能想要反弹键输入,所以它只会在用户闲置几百毫秒时触发。