其他 javascript 正在更改输入的值,我想知道是否有办法检测到更改。
这个问题与 Keyup 或 Change 无关。这不是由用户输入的,而是通过用户的各种操作被其他 javascript 更改的。
其他 javascript 正在更改输入的值,我想知道是否有办法检测到更改。
这个问题与 Keyup 或 Change 无关。这不是由用户输入的,而是通过用户的各种操作被其他 javascript 更改的。
以编程方式更改事件时,您可以触发更改事件以确保触发附加到元素的事件处理程序。jQuery 有一个trigger()
方法可以做到这一点:
$('#elementID').on('change', function() {
alert( this.value );
});
$('#elementID').val('some new value').trigger('change');
我要说的是:除了修改第三方脚本来输出东西,或者使用setInterval
(成本高昂)之外,别无他法。
这个问题的底线是一个简单的问题,一开始似乎不是这样:你如何让你的脚本相互通信?
当脚本通过 JS 方法(即不是用户输入)修改输入的值时,他们必须经过特定的箍来触发“更改”事件(他们可以通过调用它来手动触发它,而大多数开发人员从不会这样做并且在编写代码时很容易忘记)。在实践中,人们倾向于依靠观察事件(用户定义的事件)来跟踪代码更改。这与 DOM 事件非常相似 - 您将回调绑定到脚本,这允许您点击回调,只要您的脚本执行一些有趣的事情(例如修改输入。这只是一个示例),就会触发回调。然后,您可以教您的脚本和开发人员使用回调来触发有用的事件,以通知其他脚本。
一个很棒的库是Postal,它最初是一个 Node 库。jQuery 还有一个可以利用的事件系统。然而,如果你想自己动手,你只需要阅读观察者设计模式。这很简单:您将一个函数绑定到您的对象以获取回调,另一个来触发它们。每当您更改事物时,都会触发回调。简单的。
不这样做意味着setInterval
。糟透了,但是你去:-(