Javascript 跟踪/观察文本框值已更改

Javascript 跟踪/观察文本框值已更改,javascript,jquery,Javascript,Jquery,是否有任何方法可以检测文本框值的更改,无论用户是显式更改还是某些java脚本代码修改了文本框?我需要检测此更改。要跟踪用户更改,您可以添加按键处理程序: $(selector).keypress(function() { // your code }); 更新:除了注意按键之外, 您可以使用change函数通过JavaScript查看更改。它不会立即用于用户更改(仅在输入失去焦点后调用),但与按键一起使用,我相信您涵盖了所有情况: $(selector).change(function

是否有任何方法可以检测文本框值的更改,无论用户是显式更改还是某些java脚本代码修改了文本框?我需要检测此更改。

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

$(selector).keypress(function() {
    // your code
});
更新:除了注意按键之外, 您可以使用
change
函数通过JavaScript查看更改。它不会立即用于用户更改(仅在输入失去焦点后调用),但与
按键一起使用,我相信您涵盖了所有情况:

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

setTimeout(function() { $(selector).val("changed"); }, 2000); // Will trigger the change
编辑:对不起,它似乎也适用于JavaScript,但我错了,但是,将能够解决您的问题(使用
setTimeout
进行测试,并且能够检测到更改)


我在jsFiddle中发布了一条消息。有了这个新的
watch
插件,您不再需要
keypress
change
:它可以用于按键输入、复制/粘贴、JavaScript等。

如果值从JavaScript更改,我还需要检测值。@user960567您尝试过链接问题建议吗?检查我的更新答案,我在JSFIDLE上发布了一个示例。让计时器检查每次更改的值不是一个好办法。@user960567我同意。但是,AFAIK轮询是唯一一种也适用于JavaScript的解决方案(按键和更改的组合适用于所有用户场景,包括键入、剪切/粘贴、拖放,但不适用于JavaScript)。这样做,或者修改您的脚本,使它们在不调用您的代码的情况下都不会更改输入字段……我将您的帖子标记为答案,但如果浏览器不支持本机脚本,则只应回退到alternative/polyfill。例如,FF本机支持watch。其他浏览器支持已修改。检查此项以改进您的版本。顺便说一句,谢谢。