まず第一に、私はこれが以前に尋ねられたことを知っています 。jQueryのような一般的なライブラリのより最近のバージョンがこれを解決したことを期待してもう一度お願いします。これは希望的観測かもしれません、私は知っています...
<input>
そうは言っても、まだすべての変更(キーを押す、貼り付ける、自動修正)を検出する方法はありますか?$("#myElement").bind('input propertychange', function (e) {...});
IE9が登場して壊れるまで使用していました(バックスペース/カット/削除では起動しません)。
私が知っている3つのオプションがありますが、すべてに欠点があります。
- さらに多くのイベント(キーアップ、貼り付けなど)にバインドし、
setTimeout
重複を無視するために使用します。 - ブラウザの検出に基づいて特定のイベントにバインドします。
- さらに多くのイベントにバインドし、jQuery.data()で古い値を追跡し、ハンドラーを起動する前にそれと比較します(この回答のように)。
「より良い方法」がまだない場合、上記のどれを好みますか、そしてその理由は何ですか?