检测输入是否已动态更改

时间:2013-05-11 20:08:11

标签: javascript jquery input

其他javascript正在改变输入的值,我想知道是否有办法检测更改。

此问题与Keyup或Change无关。这不是由用户输入的,而是由用户的各种动作通过其他javascript改变。

2 个答案:

答案 0 :(得分:1)

以编程方式更改事件时,可以触发更改事件以确保触发附加到元素的事件处理程序。 jQuery有一个trigger()方法来执行此操作:

$('#elementID').on('change', function() {
    alert( this.value );
});


$('#elementID').val('some new value').trigger('change');

答案 1 :(得分:-1)

我要说的快速失败是:除了修改第三方脚本以输出内容或使用setInterval(代价高昂)之外别无他法。

这个问题的底线是一个简单的问题,起初看起来并不是这样:如何让你的抄写员彼此沟通?

当脚本通过JS方法修改输入的值(即不是用户输入)时,他们必须通过特定的环节才能触发“更改”事件(他们可以通过调用它来手动触发它,大多数开发人员从不这样做,在编写代码时很容易被遗忘。在实践中,人们倾向于依靠观察事件(用户定义的事件)来跟踪代码更改。这与DOM事件非常相似 - 你将回调绑定到你的脚本,这允许你点击回调,只要你的脚本做了一些有趣的事情(比如修改输入)就会触发。这只是一个例子。然后,您教您的脚本和开发人员使用回调来激活有用的事件以通知其他脚本。

一个很棒的库是Postal,它最初是一个Node库。 jQuery还有一个可以使用的事件系统。但是,如果您想要自己动手,那么您必须阅读的是Observer设计模式。它是微不足道的:你将一个函数绑定到你的对象来获取回调,另一个函数来解雇它们。每当你更改东西时,你都会触发回调。 Simples。

未能这样做意味着setInterval。很糟糕,但你去了: - (