2011-08-11 66 views
3

我有各種輸入,我想設置一個髒標誌。隱藏輸入變化時發生火onchange事件

但是,如果這些輸入被javascript修改,onchange事件不會觸發。
許多輸入是由許多其他人編寫的自定義數據輸入模塊,並具有隱藏輸入和javascript UI層來修改隱藏輸入。

我想檢測這些隱藏的輸入何時改變。 (沒有修改原作者的腳本)
也正常的輸入不會觸發'onchange'事件,直到'模糊',但我可以用onkeyup事件繞過這個。

+2

您需要定位哪些瀏覽器? –

+0

IE 8 + ...儘可能多...但我猜如果它只能在IE中工作,它仍然值得去做。 – Myster

回答

0

編輯:「退房‘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?它每200ms循環DOM元素以檢查是否有任何突變。不是最好的或最優雅的方式。 – Achshar

相關問題