使用Javascript / jQuery捕获对输入框内容的所有更改

时间:2011-03-31 02:15:18

标签: javascript jquery javascript-events

我有一个带有输入框的页面,以及一个处理此输入框的值并生成一段文本的函数。我希望这个文本总是与输入框的内容相关,所以我用jQuery附加了几个事件处理程序来捕获任何更改:

$('#input').bind('keyup cut paste', function(){...});

这在大多数情况下效果很好。只要用户以任何方式使用键盘修改内容,或右键单击以使用剪切或粘贴功能,文本就会立即更新。然而,有两个事件我仍然没有弄清楚如何捕获,如果它甚至可能这样做:

  • 当用户选择一个文本并拖动时,它会在输入框中执行不同的位置
  • 当用户在右键单击上下文菜单中使用“删除”操作时

这两个当然可以通过绑定change事件来检测,但是这种方法的问题是它不会在输入框失去焦点之前触发。这些绑定的重点是在输入框的值发生变化时实时更新文本,因此change不好。

英语是我的第二语言,所以我可能只是在描述我的谷歌搜索时表现不好,但到目前为止他们没有发现任何事情。在挖掘了几个相关的SO页面后,我还没有找到任何解决方案,所以我在这里问。是否有一个我不知道的事件绑定?如果没有,我可以采取不同的方法吗?或者使用普通的Javascript这是不可能的?

3 个答案:

答案 0 :(得分:7)

在非IE浏览器中,您可以处理input事件 在IE中,您可以处理propertychange事件。

Demo(适用于所有浏览器)

答案 1 :(得分:0)

this SO question (and related jsfiddle)可能会回答您的问题。

(在链接的jsfiddle上,将文本放在顶部框中进行测试)

换句话说,绑定到mouseupmousedown

答案 2 :(得分:0)

如果找不到涵盖所有案例的事件组合,您可能需要使用setInterval(function() {... }, period)。您可以使用period来查看其效果如何。