Javascript 隐藏输入更改时触发onchange事件
我有各种输入,我想设置一个脏标志 但是,如果这些输入由javascript修改,则不会触发onchange事件。Javascript 隐藏输入更改时触发onchange事件,javascript,Javascript,我有各种输入,我想设置一个脏标志 但是,如果这些输入由javascript修改,则不会触发onchange事件。 许多输入是由许多其他人编写的定制数据输入模块,具有隐藏输入和javascript UI层来修改隐藏输入 我想检测这些隐藏的输入何时改变。(不修改原作者的脚本) 另外,正常输入在“模糊”之前不会触发“onchange”事件,但我可以通过onkeyup事件来解决这个问题。编辑:“签出”domtrrmodified事件 只是一个想法,因为您不想修改原始作者脚本 你能监控一下那些区域吗 /*
许多输入是由许多其他人编写的定制数据输入模块,具有隐藏输入和javascript UI层来修改隐藏输入 我想检测这些隐藏的输入何时改变。(不修改原作者的脚本)
另外,正常输入在“模糊”之前不会触发“onchange”事件,但我可以通过onkeyup事件来解决这个问题。编辑:“签出”domtrrmodified事件 只是一个想法,因为您不想修改原始作者脚本 你能监控一下那些区域吗
/*
Very simple monitor utility.
Monitor what?
This monitors any dom element which has a "value" attribute.
This was created to monitor hidden fields that were altered via javascript.
Fields that had values changed via javascript did not trigger the "change" event.
This is a solution to that problem.
Usage:
Monitor.monitor('element_id',(function) callback);
Monitor.demonitor('element_id');
*/
var Monitor = (function(){
var inputs = [];
return {
monitor:function(input_id,callback){
var previous_value = "";
function go (){
current_value = document.getElementById(input_id).value;
if(previous_value !== current_value){
callback();
}
previous_value = document.getElementById(input_id).value;
}
inputs[input_id] = setInterval(go,200);
},
demonitor:function(input_id){
clearInterval(inputs[input_id]);
}
}
})();
我知道这是一个老问题,但我有同样的问题,我在这里找到了答案:你需要针对哪个浏览器?IE 8+…尽可能多…但我想如果它只在IE中工作,它仍然值得去做。Wut?它每200毫秒循环DOM元素以检查任何变异。这不是最好或最优雅的方式。