2011-08-11 3 views
3

더티 플래그를 설정하려는 다양한 입력이 있습니다. 이러한 입력은 자바 스크립트에 의해 수정하는 경우 onchange를 이벤트가 발생하지 않습니다 그러나숨겨진 입력이 변경되면 화재 onchange 이벤트가 발생합니다.

.
많은 입력은 다른 많은 사람들이 작성한 사용자 정의 데이터 입력 그룹이며 숨겨진 입력을 수정하기 위해 숨겨진 입력과 자바 스크립트 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? 돌연변이 여부를 확인하기 위해 DOM 요소를 200ms마다 반복합니다. 최고 또는 가장 우아한 방법은 아닙니다. – Achshar

관련 문제