javascript - 在不进行轮询的情况下监听由 JavaScript 更改的输入值

标签 javascript jquery

我们正在开发的网站上有很多表格。其中一些表单具有根据用户所做的其他事情使用 JavaScript 填充特定字段的功能。 (例如邮政编码查找)。

对于每个表单,当每个表单字段值被修改时,我们都希望做一些事情

  • On change 事件不会由 JavaScript 更改的值触发。

  • MutationObserver 似乎无法监听值的变化 (它只监听属性变化,不监听属性变化)。除非 我错过了什么?

  • 我们不想(在某些情况下不能)改变 JavaScript 填充字段以触发更改事件。

因此,我们有一个表单,其中的字段值可能由某些 JavaScript 或其他地方填充,我们需要知道字段值何时发生变化。

目前我们想出的唯一可行的解​​决方案是使用“polling” ' 定期检查所有字段(使用 setInterval)以查看它们的值是否已更改。我们想知道是否有人可以提出更好的解决方案?

(我们使用的是 jQuery 1.11.2)。

更新:我们已经找到了我发布在下面的这个问题的答案。但是,我们不知道重新定义对象的默认属性可能会产生什么后果,因此我们还没有 100% 满意该解决方案,并继续寻找更多想法。

最佳答案

GracefulLight posted here 的解决方案Rory 给我们的那个确实有用。

您可以重新定义对象的 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;
  }
});

关于javascript - 在不进行轮询的情况下监听由 JavaScript 更改的输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52624030/

相关文章:

javascript - 按值|文本查找选择索引

javascript - 适用于 Google 表格的 Apps 脚本(onedit 功能)

javascript - ajax验证成功后才提交表单

javascript - jQuery AJAX JSONP 返回 400 错误请求

javascript - 即使加载了 JavaScript,也无法调用加载的 JavaScript 中的变量

JavaScript,Divs 不会回到初始位置

javascript - 使用 next/prev 浏览多个 div

jQuery text() 函数在 IE 中丢失换行符

jQuery:根据内联样式宽度更改CSS颜色

Javascript For 循环减慢进度事件监听器触发