2

ファイルアップロードの入力フィールドがいつ更新されたかを検出しようとしています。IE と FF では、blur() を使用すればこれを実行できますが、Chrome では change() を使用する必要があります。Chrome(およびサファリ)はblurイベントをトリガーしないため、jquery.supportsオブジェクトにこれをチェックするプロパティがありますか、それとも非推奨の.browserオブジェクトを使用する必要がありますか?

下のポスターでは、変更されたイベントは 3 つのブラウザーすべてで動作し、これを使用する必要があると述べていますが、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>
4

1 に答える 1

0

この関数を使用してイベントがサポートされているかどうかを検出してみてください。これは信用できませんが、どこで入手したか忘れてしまいました。

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

次に、関数を好みのイベントにバインドします。

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

それがあなたにとってどのように機能するか教えてください...

于 2012-01-04T14:33:32.590 に答える