【问题标题】:Track/Observe TextBox value changed跟踪/观察文本框值已更改
【发布时间】:2012-02-02 08:00:45
【问题描述】:

有什么方法可以检测到文本框的值发生了变化,无论是用户显式更改还是某些 java 脚本代码修改了文本框?我需要检测这种变化。

【问题讨论】:

标签: javascript jquery


【解决方案1】:

要跟踪用户更改,您可以添加按键处理程序:

$(selector).keypress(function() {
    // your code
});

更新:除了注意按键, 您可以使用 change 函数通过 JavaScript 观察变化。它不会立即用于用户更改(仅在输入失去焦点后调用),但与 keypress 一起,我相信您涵盖了所有情况:

$(selector).change(function() {
    // the same code
});

setTimeout(function() { $(selector).val("changed"); }, 2000); // Will trigger the change

编辑:抱歉,它似乎也适用于 JavaScript,但我弄错了...This question,但是,将能够解决您的问题(使用 setTimeout 测试,它能够检测到更改)。

我在 jsFiddle 中发布了 example。有了这个新的watch 插件,您不再需要keypresschange:它可以用于键入、复制/粘贴、JavaScript 等。

【讨论】:

  • @user960567 您是否尝试过链接的问题建议?检查我更新的答案,我在 jsFiddle 上发布了一个示例。
  • 这不是一个好计时器来检查每次更改的值。
  • @user960567 我同意。但是,AFAIK 轮询是唯一适用于 JavaScript 的解决方案(keypresschange 的组合适用于所有用户场景 - 键入、剪切/粘贴、拖放 - 但不适用于 JavaScript)。这个,或者修改你的脚本,所以它们都不会在不调用你的代码的情况下更改输入字段......
  • 我将您的帖子标记为答案,但如果浏览器不支持本机版本,则仅回退到替代/polyfill 是值得的。例如,FF 原生支持 watch。其他浏览器支持 DOMAttrModified。检查此以改进您的版本,darcyclarke.me/development/detect-attribute-changes-with-jquery。顺便说一句,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多