2010-11-24 45 views
2

我試圖檢測何時文件上傳輸入字段已更新。 在IE & FF我可以做到這一點,如果我使用blur(),但對於Chrome我需要使用change()。 由於Chrome瀏覽器(我相信safari)不會觸發blur事件,因此jquery.supports對象中有一個屬性用於檢查此問題還是必須使用已棄用的.browser對象?Chrome/Safari模糊功能支持jQuery檢查

下面是一個示例頁面,顯示我的意思,因爲下面的海報表示更改的事件適用於所有三種瀏覽器,並且是我應該使用的功能,但我認爲對於檢測支持問題的答案仍然有用爲模糊事件。

<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()`應該適用於所有瀏覽器。 – 2010-11-24 13:27:18

回答

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; 
    } 

之後定義將包含一個變量您要麼/或事件:

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

然後綁定你的功能,無論你prefrered事件是:

$('#test-input').bind(ChangeOrBlur, function(){alert(ChangeOrBlur);}); 

讓我知道這是如何工作我們爲你...