8

テキスト入力の内容を変更するすべてのイベントをチェックする必要があります。これまでのところ、キーアップ、カット アンド ペーストのハンドラがあります。ただし、テキストを強調表示して削除または元に戻すをクリックすることで、内容を変更することもできます。これらのイベントをリッスンする方法はありますか?

$('#input').on('paste cut  keyup ',function() {
    //add delete and undo to listner
});     
4

5 に答える 5

6

これよりも多くの問題があり、オートフィル機能などを備えたブラウザーについても心配する必要があります。このため、HTML5 にはinput、最新のブラウザーに含まれているイベントが含まれています。

考えられるすべての変更イベント (*) をキャプチャする方法については、この回答を参照してください。変更ごとに複数回発生することなく、ブラウザでキャプチャできます。

(*) を忘れているようcutですので、それも追加してください。

于 2013-02-20T22:18:15.660 に答える
2

と を使用することをお勧めしkeydownますinput: http://jsfiddle.net/vKRDR/

var timer;
$("#input").on("keydown input", function(){
    var self = this;
    clearTimeout(timer)
    // prevent event from happening twice
    timer = setTimeout(function(){
        console.log(self.value);
    },0);
});

keyup は ctrl などの特殊キーをキャッチしません。入力は、コンテキスト メニューからでも貼り付け削除などをキャッチします。

キーダウンと入力を使用すると、ユーザーがボタンを離したり、入力をぼかしたりするのを待つのではなく、イベントがすぐに発生します。

キーダウンはほとんどの作業を行い、コンテキストメニューの削除/貼り付け/切り取りなど、キーダウンが処理できない場所で入力が取得されます

于 2013-02-20T22:16:53.997 に答える
0

少なくともキープレスと変更がありません。「変更」がこれらのアクションで機能するかどうかはわかりませんが、入力要素がフォーカスを失ったときに変更が呼び出されることが多いことは知っています。

于 2013-02-20T22:15:31.547 に答える
-1

change イベントを使用します。

$('#input').on('change', function(){});

于 2013-02-20T22:14:28.113 に答える