侦听JavaScript更改的输入值,无需轮询
我们正在开发的网站上有很多表单。其中一些表单具有使用JavaScript根据用户所做的其他事情填充特定字段的功能。(例如,邮政编码查找) 对于每个表单,我们希望在修改每个表单字段值时执行一些操作侦听JavaScript更改的输入值,无需轮询,javascript,jquery,Javascript,Jquery,我们正在开发的网站上有很多表单。其中一些表单具有使用JavaScript根据用户所做的其他事情填充特定字段的功能。(例如,邮政编码查找) 对于每个表单,我们希望在修改每个表单字段值时执行一些操作 更改时事件不会由JavaScript更改的值触发 MutationObserver似乎无法侦听值更改 (它只侦听属性更改,而不侦听属性更改)。除非 我错过了什么 我们不想(在某些情况下不能)更改 填充字段以触发更改事件 因此,我们有一个表单,其中可能有一些JavaScript或其他JavaScrip
- 更改时事件不会由JavaScript更改的值触发
- MutationObserver似乎无法侦听值更改 (它只侦听属性更改,而不侦听属性更改)。除非 我错过了什么
- 我们不想(在某些情况下不能)更改 填充字段以触发更改事件
Object.defineProperty(document.querySelector(".my-object"), "value", {
set: function(newValue) {
console.log("Object's value property has changed");
// do something
this.style.borderColor = "#228B22";
// make sure the value is still passed to the input to be output
return this.defaultValue = newValue;
}
});
如果不能够修改设置触发事件的值的代码,也不能够修改MutationObserver,那么除了轮询(这很糟糕)之外,您就没有什么其他可以做的了。我强烈建议您尝试编辑设置触发事件的值的代码。为什么不使用诸如knockout.js之类的库?@nbokmans-在粗略搜索时立即用谷歌搜索可能会奏效,尽管我怀疑它是否可靠跨浏览器。@nbokmans如果OP说他们无法修改现有代码,我不认为这有什么用处。如果可能的话,他们也可以添加
trigger()
调用,而不是添加另一个完整的库