2010-11-24 2 views
2

파일 업로드 입력 필드가 업데이트 된시기를 감지하려고합니다. IE & FF에서 blur()를 사용하면이 작업을 수행 할 수 있지만 Chrome의 경우 change()를 사용해야합니다. 크롬 (사파리는 사기라고 생각하기 때문에) 블러 이벤트를 트리거하지 않기 때문에 jquery.supports 객체에이 속성을 확인하는 속성이 있거나 사용되지 않는 .browser 객체를 사용해야합니까?jquery의 Chrome/Safari 흐림 기능 지원

아래 포스터에서 세 가지 브라우저 모두에서 변경된 이벤트가 작동하며 사용해야 할 것이지만 다음과 같은 포스터로 표시된다는 샘플 페이지가 있습니다.하지만 지원을 찾는 질문에 대한 대답을 얻는 것이 여전히 유용하다고 생각합니다. blur 이벤트의 경우.

<html> 
    <head> 
     <script src="jquery-1.4.3.min.js" type="text/javascript"></script> 
     <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#test-input').change(function() { alert('changed'); }); 
      $('#test-input').blur(function() { alert('blurred'); }); 
      }); 
     </script> 
    </head> 
    <body> 
     <input type="file" id="test-input"> 
    </body> 
</html> 
+0

이러한 브라우저는 이벤트를 올바르게 트리거합니다 ... 문제를 보여주는 예제가 있습니까? '.change()'는 여러분이하고있는 것을 모든 브라우저에서 작동해야합니다. –

+0

맞습니다. 간단한 데모를 만들려고 할 때 세 브라우저에서 모두 변경 이벤트가 발생했습니다. 내 코드에 문제가있을 수 있습니다. 그러나 FF & IE가 멀리 크롬을 클릭 할 때 흐리게 사건을 방아쇠를 당겼더라도. 따라서 어쨌든 코드를 게시하여 a) 내 코드에 문제가 있거나 b) 기능/버그에 대한 지원/비 지원을 감지 할 수있는 방법이 있는지 확인하십시오. – Mike

+0

'change()'는 모든 브라우저에서 작동했습니다. 만약 사용자가 같은 파일을 다시 선택했을 때'change()'가 다시 발생하지 않는다고 걱정한다면'$ ('form') [0] .reset()' – timdream

답변

0

이벤트 난에 대한 크레딧을받을 수 없어이 기능을 사용하여 지원되는 경우 내가 어디서 얻었 그러나 내가 잊고, dectecting보십시오 : 그 포함될 변수를 정의한 후

var isEventSupported = function(eventName) { //Function to detect supported events 
var el = document.createElement('div'); 
    eventName = 'on' + eventName; 
    var isSupported = (eventName in el); 
    if (!isSupported) { 
     el.setAttribute(eventName, 'return;'); 
     isSupported = typeof el[eventName] == 'function'; 
     } 
    el = null; 
    return isSupported; 
    } 

당신의 중/

: 또는 이벤트 : 당신의 prefrered 이벤트가 무엇이든에

var ChangeOrBlur = (isEventSupported('blur')) ? 'blur' : 'change'; //with change as your default 

그런 다음 함수를 바인딩

어떻게 작동하는지 알려주세요.