2010-11-24 5 views
2

ファイルのアップロード入力フィールドが更新されたときを検出しようとしています。 IE & FF私はblur()を使用するとこれを行うことができますが、Chromeの場合はchange()を使用する必要があります。 Chrome(と私はsafari)はblurイベントを引き起こさないので、jquery.supportsオブジェクトにこれをチェックするプロパティがあるか、または廃止予定の.browserオブジェクトを使用する必要がありますか?jqueryのChrome/Safariのぼかし機能のサポート

以下のポスターは3つのブラウザすべてで変更されたイベントが動作していることを示していますが、私が使用するはずのものですが、サポートを検出するための質問に答えてもらえますブラーイベントのために。

<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

あなたが正しいです、単純なデモを作成しようとすると、3つのブラウザすべてで変更イベントが発生しました。私は私のコードに問題があるかもしれないと思う。しかし、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; 
    } 

それはあなたが含まれているいずれか/する変数を定義した後、またはイベント:

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

次にどんなごprefreredイベントにあなたの関数をバインドです:

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

あなたのためにどのように動作するのか教えてください...