【问题标题】:Fire onchange event when hidden input changes隐藏输入更改时触发 onchange 事件
【发布时间】:2011-10-24 14:53:50
【问题描述】:

我有各种输入要设置脏标志。

但是,如果这些输入被 javascript 修改,onchange 事件不会触发。
许多输入是由许多其他人编写的自定义数据输入模块,并具有隐藏输入和 javascript UI 层来修改隐藏输入。

我想检测这些隐藏输入何时发生变化。 (不修改原作者的剧本)
正常输入在“模糊”之前不会触发“onchange”事件,但我可以通过 onkeyup 事件解决这个问题。

【问题讨论】:

  • 您需要定位哪些浏览器?
  • IE 8+...尽可能多...但我想如果它只适用于IE它仍然值得做。

标签: javascript


【解决方案1】:

我知道这是一个老问题,但我也有同样的问题,我在这里找到了答案:What event can be captured when an HTML hidden input value is set / changed

【讨论】:

    【解决方案2】:

    编辑:“查看“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]);
            }
    
    
        }
    })();
    

    【讨论】:

    • 呜?它每 200 毫秒循环一次 DOM 元素以检查是否有任何突变。不是最好或最优雅的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 2017-07-10
    • 2019-12-28
    相关资源
    最近更新 更多