2011-08-11 15 views
3

ダーティーフラグを設定するためのさまざまな入力があります。隠し入力が変更されたときにイベントを発生させる

しかし、これらの入力がjavascriptによって変更された場合、onchangeイベントは発生しません。
多くの入力は、他の多くの人が作成したカスタマイズされたデータ入力集計であり、非表示の入力を変更するために入力とJavaScriptのUIレイヤーが隠されています。

これらの隠された入力がいつ変化するかを検出したいと思います。
また、通常入力は 'ぼかし'まで 'onchange'イベントをトリガーしませんが、onkeyupイベントでこれを丸めることができます。

+2

どのブラウザをターゲットにする必要がありますか? –

+0

IE 8 + ...できるだけ多くの...しかし、それはIEでのみ動作する価値があるだろうと思う。 – Myster

答えて

0

EDIT:は「 '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]); 
     } 


    } 
})(); 
+1

Wut? DOM要素を200msごとにループして突然変異をチェックします。最高または最もエレガントな方法ではありません。 – Achshar

関連する問題