我们正在开发的网站上有很多表格。这些表单中的某些表单具有可以根据用户执行的其他操作使用JavaScript填充特定字段的功能。 (例如邮政编码查找)。
对于每种表单,我们都希望在修改每个表单字段值时做某事。
更改事件不会被JavaScript更改的值触发。
MutationObserver似乎无法侦听值更改 (它仅侦听属性更改,不侦听属性更改)。除非 我想念什么吗?
我们不想(在某些情况下不能)更改用于 填充字段以触发on change事件。
因此,我们有一个表单,其中可能包含字段值,这些字段值在此过程中由某些JavaScript或其他JavaScript填充,因此我们需要知道字段值何时更改。
目前,我们提出的唯一可行的解决方案是使用'polling'定期检查所有字段(使用setInterval)以查看其值是否已更改。我们想知道是否有人可以提出更好的解决方案?
(我们正在使用jQuery 1.11.2)。
更新:我们找到了这个问题的答案,我在下面发布了该答案。但是,我们不知道重新定义对象的默认属性的后果可能是什么,因此我们还不能100%满意该解决方案,而是继续寻找更多的想法。
答案 0 :(得分:0)
罗里(Rory)给我们的GracefulLight posted here解决方案行之有效。
您可以重新定义对象的value属性,使您可以在设置value属性后执行任何操作。
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;
}
});