Javascript 检测输入是否已动态更改
其他javascript正在更改输入的值,我想知道是否有一种方法可以检测到更改Javascript 检测输入是否已动态更改,javascript,jquery,input,Javascript,Jquery,Input,其他javascript正在更改输入的值,我想知道是否有一种方法可以检测到更改 这个问题与加密或更改无关。这不是由用户输入的,而是由其他javascript通过用户的各种操作更改的 我要说的是:除了修改第三方脚本以输出内容,或者使用setInterval(代价高昂),没有其他方法 这个问题的底线很简单,一开始似乎不是这样:你如何让你的纸条相互沟通? 当脚本通过JS方法(即非用户输入)修改输入值时,它们必须经过特定的限制才能触发“更改”事件(它们可以通过调用手动触发事件,这是大多数开发人员永远不会
这个问题与加密或更改无关。这不是由用户输入的,而是由其他javascript通过用户的各种操作更改的 我要说的是:除了修改第三方脚本以输出内容,或者使用
setInterval
(代价高昂),没有其他方法
这个问题的底线很简单,一开始似乎不是这样:你如何让你的纸条相互沟通?
当脚本通过JS方法(即非用户输入)修改输入值时,它们必须经过特定的限制才能触发“更改”事件(它们可以通过调用手动触发事件,这是大多数开发人员永远不会做的,并且在编写代码时很容易忘记)。实际上,人们倾向于依靠观察事件(用户定义的事件)来跟踪代码更改。这与DOM事件非常相似-您将回调绑定到脚本,这允许您在脚本执行有趣的操作(如修改输入)时触发回调。然后教脚本和开发人员使用回调通知其他脚本,在有用的东西上触发事件
这方面的一个很好的库是,它最初是一个节点库。jQuery还有一个事件系统,您可以使用它。但是,如果您想自己动手,您只需要阅读Observer设计模式。这很简单:您将一个函数绑定到您的对象以获取回调,另一个用于触发回调。无论何时更改内容,都会触发回调。简单
不这样做意味着
setInterval
。糟糕透了,但你看:-(我要说的是:除了修改第三方脚本以输出内容,或者使用setInterval
(代价高昂),没有其他方法了
这个问题的底线很简单,一开始似乎不是这样:你如何让你的纸条相互沟通?
当脚本通过JS方法(即非用户输入)修改输入的值时,它们必须经过特定的限制才能触发“更改”事件(它们可以通过调用手动触发事件,这是大多数开发人员永远不会做的,并且在编写代码时很容易忘记)。在实践中,人们倾向于依靠观察事件(用户定义的事件)来跟踪代码更改。这与DOM事件非常相似-您将回调绑定到脚本,这允许您在脚本执行有趣的操作(如修改输入)时点击将触发的回调。这只是一个示例)。然后,您可以教导您的脚本和开发人员使用回调通知其他脚本在有用的内容上触发事件
这方面的一个很好的库是,它最初是一个节点库。jQuery也有一个事件系统,您可以使用它。但是,如果您想使用自己的事件系统,您只需要阅读Observer设计模式。它很简单:您将一个函数绑定到对象以拾取回调,另一个函数则触发回调。无论何时更改,您都可以启动回调。简单
如果不这样做,则意味着
setInterval
。这很糟糕,但你可以这样做:-(当以编程方式更改事件时,可以触发更改事件以确保触发附加到元素的事件处理程序。jQuery有一个trigger()
方法来执行此操作:
$('#elementID').on('change', function() {
alert( this.value );
});
$('#elementID').val('some new value').trigger('change');
以编程方式更改事件时,可以触发更改事件以确保触发附加到元素的事件处理程序。jQuery有一个
trigger()
方法来执行此操作:
$('#elementID').on('change', function() {
alert( this.value );
});
$('#elementID').val('some new value').trigger('change');
你总是可以使用setInterval调用来轮询它。虽然不是很优雅。你有代码示例吗?你可以控制其他javascript吗?如果是这样,当你改变了很多可能改变的输入时,你可以触发某种事件。我可以将它构建到程序中,改变输入,但我希望有一种更优雅的方法ar据我所知,除了轮询等,没有这样的事件,您可以尝试不太受支持的oninput事件,但怀疑它会起作用!使用触发器('change'))更改值是最简单的。您可以始终使用setInterval调用来轮询它。但这并不优雅。您有代码示例吗?您可以控制其他javascript吗?如果有,您可以在更改大量可能更改的输入时触发某种事件。我可以将其构建到更改输入的程序中,但我希望不会这里有一个更优雅的方法。据我所知,除了轮询等,没有这样的事件,您可以尝试不太受支持的oninput事件,但怀疑这会起作用!在更改值时使用触发器('change')是最简单的。