当隐藏输入框发生变化时触发onchange事件

3
我有许多输入,希望设置一个脏标志。
然而,如果这些输入由JavaScript修改,则onchange事件不会触发。
许多输入都是其他人编写的自定义数据输入模块,并具有隐藏的输入和JavaScript UI层以修改隐藏的输入。
我想检测这些隐藏输入何时发生更改(而不修改原始作者的脚本)。
另外,普通输入在“失焦”之前不会触发“onchange”事件,但我可以通过onkeyup事件解决这个问题。

2
你需要针对哪些浏览器进行开发? - Crescent Fresh
IE 8+...尽可能多的浏览器...但我猜如果它只在IE中有效,仍然值得做。 - Myster
2个回答

0

-1

编辑:请查看“domattrmodified”事件。

仅提供一些建议,因为您不希望修改原作者的脚本。

您可以监视那些字段吗?

/*
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]);
        }


    }
})();

2
什么?它每200毫秒循环一次DOM元素,以检查是否有任何变化。这不是最好的或最优雅的方式。 - Achshar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接