你如何得到一个变异观察者来检测textarea的值变化?

bmi*_*are 8 javascript mutation-observers

我已经看到变异观察者用它来修改doms的属性,例如使用谷歌浏览器开发工具.但是,我不能找到如何在textarea用户输入或粘贴时更改文本时调用函数.在我的代码中,当用户键入时,即使将所有observe选项设置为true,也不会调用回调.这是什么代码?

Mar*_*arc 9

突变观察者监听DOM的变化.然而,表单元素的当前状态不会被DOM反映出来.

例如,在不设置value属性的情况下创建输入元素输入.当文本输入到输入字段时,input.value会反映此文本.另一方面,input.getAttribute('value')仍然返回null.

因此,变异观察者无法在形式字段的状态中观察到这种变化.

(建议ECMAScript的第6版Object.observe也于事无补.尽管人们可以在最新版本的Chrome浏览器,如主机对象属性的变化主机对象的变化倾听价值输入上面没有被观察到.)


Cha*_*ang 0

请参阅此链接Textarea onchange 检测。您将需要编写 onkeyup 和 onchange 函数。

顺便说一句,上面的答案不适用于输入法。我的解决方案是setInterval每 50 毫秒检测一次文本是否发生变化。

  • 感谢您的回答,但使用突变观察者背后的要点是消除依赖轮询来检测变化(任何原因)。听起来你是在建议突变观察者不能这样做。 (2认同)