Javascript 如何检测动态进行的值更改
我正在修改一个项目,该项目使用JavaScript动态填充文本框值,计算其他文本框的更改,但我不想更改原始JavaScript文件 如何检测原始JavaScript何时更改了文本框值,我需要检测值何时更改,然后启动自己的函数 如果这更容易,我愿意使用jquery 尝试:Javascript 如何检测动态进行的值更改,javascript,jquery,Javascript,Jquery,我正在修改一个项目,该项目使用JavaScript动态填充文本框值,计算其他文本框的更改,但我不想更改原始JavaScript文件 如何检测原始JavaScript何时更改了文本框值,我需要检测值何时更改,然后启动自己的函数 如果这更容易,我愿意使用jquery 尝试: $("#total_amt").on("change", function() { alert("Handler for .change() called."); }); 但这仅在我手动更改tot
$("#total_amt").on("change", function() {
alert("Handler for .change() called.");
});
但这仅在我手动更改total_amt的值时有效,而在动态更改时无效 试试这个:
$("#total_amt").on("input", function() {
alert("Handler for .change() called.");
});
这是HTML5的东西,但对于其他浏览器来说,它在现代浏览器中不起作用
var lastValue = '';
$("#total_amt").on('change keyup paste', function() {
if ($(this).val() != lastValue) {
lastValue = $(this).val();
calert("Handler for .change() called.");
}
});
你不能。最好的解决方案是在更改值时引发您自己的事件,并自己挂钩。大概是这样的:
// after changing the value in code:
$('#total_amt').val(newValue).trigger('dynamicChange');
// event hook
$("#total_amt").on("change dynamicChange", function() {
alert("Handler for .change() called.");
});
是的,虽然我个人不喜欢触发本机事件,但我总是触发自己的本机事件,以便更准确地跟踪到底发生了什么以及何时发生。我同意这一点,但我更喜欢使用triggerHandler,即使更改事件无论如何都不会冒泡,所以在不更改原始代码的情况下也无法做到这一点hmm@user794846不使用间隔来检查值或某种属性更改观察员(这是不好的),不!嗯,我不确定它是否支持这就是为什么:)顺便说一句,oninput不会因为编程更改的值而被解雇。。。。那么触发器将是唯一的选择?或者可能是解决这个问题的另一种方法?从某种意义上说,触发点是罗里·麦克罗森(Rory McCrossan)建议的!下面的答案