235

inputこのjsfiddleを見るまで、jQuery で呼び出されたイベントについて聞いたことがありません。

なぜそれが機能しているのか知っていますか?のエイリアスkeyupか何かですか?

$(document).on('input', 'input:text', function() {});
4

8 に答える 8

222

ユーザー インターフェイスを介して要素のテキスト コンテンツが変更されたときに発生します。

keyupキーが何もしない場合でも起動するため、これは のエイリアスでkeyupはありません (たとえば、Control キーを押して離すとkeyupイベントがトリガーされます)。

これについて考える良い方法は次のとおりです。これは、入力が変化するたびにトリガーされるイベントです。これには、入力を変更するキーを押すこと (たとえば、Ctrlそれ自体ではイベントはトリガーされませんが、Ctrl-Vテキストを貼り付けることができます)、オートコンプリート オプションの選択、Linux スタイルの中間が含まれますが、これらに限定されません。 -クリックペースト、ドラッグアンドドロップ、その他多数。

詳細については、このページとこの回答のコメントを参照してください。

于 2013-06-29T20:11:27.970 に答える
168

oninputイベントは、入力フィールドの変更を追跡するのに非常に役立ちます。

ただし、バージョン 9 未満の IE ではサポートされていません。ただし、古いバージョンの IEonpropertychangeには、oninput.

したがって、次のように使用できます。

$(':input').on('input propertychange');

クロスブラウザを完全にサポートするため。

たとえば、無効なプロパティが変更された場合など、すべてのプロパティの変更に対して propertychange がトリガーされる可能性があるため、これを含める必要があります。

$(':input').on('propertychange input', function (e) {
    var valueChanged = false;

    if (e.type=='propertychange') {
        valueChanged = e.originalEvent.propertyName=='value';
    } else {
        valueChanged = true;
    }
    if (valueChanged) {
        /* Code goes here */
    }
});
于 2013-06-29T20:22:01.667 に答える
23

jQuery を使用すると、以下は実質的に同じになります。

$('a').click(function(){ doSomething(); });
$('a').on('click', function(){ doSomething(); });

ただし、inputイベントでは、2 番目のパターンのみが、私がテストしたブラウザーで機能するようです。

したがって、これが機能することを期待するでしょうが、(少なくとも現在は) 機能しません。

$(':text').input(function(){ doSomething(); });

繰り返しになりますが、イベント委任を活用したい場合 (たとえば、DOM に追加する#container前にイベントを設定する場合)、次のことを念頭に置いてください。input.text

$('#container').on('input', ':text', function(){ doSomething(); });

悲しいことに、繰り返しますが、現在は機能しません。

このパターンのみが機能します。

$(':text').on('input', function(){ doSomething(); });

より最新の情報で編集

私は確かにこのパターンを確認できます:

$('#container').on('input', ':text', function(){ doSomething(); });

NOW WORKS も、すべての「標準」ブラウザで動作します。

于 2015-06-24T21:12:23.597 に答える
0

jQuery には、.on()メソッドの次の署名があります。.on( events [, selector ] [, data ], handler )

イベントは、このリファレンスにリストされているもののいずれかである可能性があります。

https://developer.mozilla.org/en-US/docs/Web/Events

ただし、すべてのブラウザですべてがサポートされているわけではありません。

入力イベントについて、Mozilla は次のように述べています。

または 要素の値が変更されると、DOM 入力イベントが同期的に発生します。さらに、コンテンツが変更されたときに contenteditable エディターで起動します。

于 2015-09-04T03:17:51.807 に答える