javascript – MutationObserver不会对文本输入字段的更改做出反应

前端之家收集整理的这篇文章主要介绍了javascript – MutationObserver不会对文本输入字段的更改做出反应前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在努力使IE专用网站适应其他浏览器.例如,onpropertychange已被广泛使用,我正在使用MutationObserver来模拟该行为.

但是,我不能让MutationObserver对输入=文本字段的值更改做出反应,既不是程序更改也不是用户输入.

考虑:

<input type="text" name="test1" id="test1" />

var config = { attributes: true,childList: true,characterData: true,subtree: true };
var observer = new MutationObserver(function() { alert('success'); } );
observer.observe(document.getElementById('test1'),config);

如果我尝试通过document.getElementById(‘test1’).value =’something’或键盘输入来更改值,则不会发生任何事情.

但是,如果我尝试更改有关该元素的其他内容,例如其id或名称(通过JavaScript),则会触发MutationObserver.

值更改和MutationObserver适用于其他输入类型,具有隐藏字段值的事件.

这种行为在浏览器中是一致的.

有人知道如何观察文本字段的值变化吗?或者我必须以不同的方式处理这个问题?

解决方法

MutationObserve用于侦听DOM的更改,但是当您输入或删除某些字符时,您将看到属性值尚未更改.像这样:
name: <input type="text" id="name" value="ZJZHOME">

现在我们删除一些字符,现在值为“ZJZHO”:

var input = document.getElementById('name');
input.getAttributes('value') //alse "ZJZHOME"
input.value                  // now is "ZJZHO"

您可以看到删除字符时没有更改DOM,因此,我们应该更改DOM …

我想我们可以通过以下方法解决这个问题:

input.oninput = function(e) {
    this.setAttribute('value',input.value)
}

现在,变异观察者可以观察到表格字段状态的变化.

我希望你能理解我所说的…..我的英语很差……….

原文链接:https://www.f2er.com/js/158096.html

猜你在找的JavaScript相关文章