【发布时间】:2012-05-05 19:39:19
【问题描述】:
每当输入控件中的文本发生更改时,我都需要立即更新一些内容。但我似乎无法为此找到正确的事件。
onchange 仅在您离开输入框时触发(即离开标签或点击外部)。
onkeypress 触发 before 进行更改,并在 any 按键时触发(例如,光标向左和向右也不会导致任何文本更改)
- onkeydown 和 onkeyup 也会在 any 键上触发(甚至像 Shift 等,不会导致任何文本更改)
此外,当使用鼠标右键单击 + 从剪贴板粘贴时,这些似乎都不会触发。或者从 JS 中更改值时(即从其他地方执行 input.value = something)。
最小示例:http://jsfiddle.net/nggAm/
我该怎么办?我想我可能会解决这个问题的一种方法(嗯,主要是)是将所有事件设置为一个通用事件处理程序,在那里缓存值,并且只在字符串更改时才进行实际更新。但这感觉有点糟糕。这样做的正确方法是什么?
【问题讨论】:
-
很遗憾,mutation events 既不跨浏览器也不推荐使用。
标签: javascript events text input onchange