0

使い始めまし$('#myInput').bind('input', function() {たが、これは IE で動作しません。

ユーザーがテキスト入力フィールドにコピーして貼り付けた場合を含め、テキスト入力フィールドへの変更を検出するための最適なクロスブラウザー ソリューションは何ですか?

4

1 に答える 1

0

間隔。

彼らはブス。不要。事実上すべての人に嫌われています。しかし、IEでのユーザー入力をテストする数少ない最も回復力のある方法の1つです。

理由:

  • .on('input', function(){})IE <9ではサポートされておらず、IE9-10ではバグがあります。文字が削除されても起動しません。
  • keyup完璧にはほど遠いので、右クリックメニューとツールバーから貼り付けることができます。
  • paste私が覚えている限り、このイベントはIE6以降十分にサポートされていますが、値を入力する方法はキーボード入力と貼り付けだけではありません。入力内のテキストを選択、ドラッグアンドドロップすることもできます。これが、IEサポートを実装するときに間隔が優先される理由の1つです。

IEでは、フォールバックとして使用することもできますがonpropertychange、オブジェクトプロパティが変更されるたびに起動されるため、Intervalの場合と同様の「値が変更された」検証を実行する必要があります。したがって、すべてのブラウザー用にコードを記述し、IE用に別のコードを記述するよりも、すべてのブラウザーで機能する単一の間隔を記述したいと思います。

したがって、私の提案する解決策は次のとおりです。

  1. 次のように間隔を使用します。

    $(function() {
        var input = $('#foo'); //change this selector to your input
        function checkchange() {
            var v = input.val();
            if (input.data('v') === v) return;
            input.data('v', v);
            //do stuff
        }
        input.data('v', input.val());
        setInterval(checkchange, 100);
    });
    

フィドル

または2.GCFをモーダルに配置し、Xボタンを非表示にします。これにより、IEユーザーにGCFをインストールさせることができ、IE固有のコードを再度記述する必要がなくなります。可能な限りこれを行います。繰り返しになりますが、私のターゲットオーディエンスには通常IEユーザーは含まれていません。

于 2012-09-13T11:07:34.700 に答える