Javascript 如何检测动态进行的值更改

Javascript 如何检测动态进行的值更改,javascript,jquery,Javascript,Jquery,我正在修改一个项目,该项目使用JavaScript动态填充文本框值,计算其他文本框的更改,但我不想更改原始JavaScript文件 如何检测原始JavaScript何时更改了文本框值,我需要检测值何时更改,然后启动自己的函数 如果这更容易,我愿意使用jquery 尝试: $("#total_amt").on("change", function() { alert("Handler for .change() called."); }); 但这仅在我手动更改tot

我正在修改一个项目,该项目使用JavaScript动态填充文本框值,计算其他文本框的更改,但我不想更改原始JavaScript文件

如何检测原始JavaScript何时更改了文本框值,我需要检测值何时更改,然后启动自己的函数

如果这更容易,我愿意使用jquery

尝试:

   $("#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)建议的!下面的答案