input
このjsfiddleを見るまで、jQuery で呼び出されたイベントについて聞いたことがありません。
なぜそれが機能しているのか知っていますか?のエイリアスkeyup
か何かですか?
$(document).on('input', 'input:text', function() {});
ユーザー インターフェイスを介して要素のテキスト コンテンツが変更されたときに発生します。
keyup
キーが何もしない場合でも起動するため、これは のエイリアスでkeyup
はありません (たとえば、Control キーを押して離すとkeyup
イベントがトリガーされます)。
これについて考える良い方法は次のとおりです。これは、入力が変化するたびにトリガーされるイベントです。これには、入力を変更するキーを押すこと (たとえば、Ctrl
それ自体ではイベントはトリガーされませんが、Ctrl-V
テキストを貼り付けることができます)、オートコンプリート オプションの選択、Linux スタイルの中間が含まれますが、これらに限定されません。 -クリックペースト、ドラッグアンドドロップ、その他多数。
詳細については、このページとこの回答のコメントを参照してください。
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 */
}
});
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 も、すべての「標準」ブラウザで動作します。
jQuery には、.on()
メソッドの次の署名があります。.on( events [, selector ] [, data ], handler )
イベントは、このリファレンスにリストされているもののいずれかである可能性があります。
https://developer.mozilla.org/en-US/docs/Web/Events
ただし、すべてのブラウザですべてがサポートされているわけではありません。
入力イベントについて、Mozilla は次のように述べています。
または 要素の値が変更されると、DOM 入力イベントが同期的に発生します。さらに、コンテンツが変更されたときに contenteditable エディターで起動します。