1. ホーム
  2. jquery

[解決済み】JQuery:入力フィールドの変更を検出する【重複】。

2022-04-06 22:40:48

質問

ユーザーのキーボード操作によってテキストフィールドの値が変更されたことを検出したい。モダンブラウザで一貫して動作することが望ましい。

.keypressイベントのJQueryのページには、一貫性がないと書いてありますが?また、backspace、deleteなどでは動作しません。

.keydownはshift、alt、矢印キーなどに反応するので、そのままでは使えませんね。また、ユーザーがキーを押しながら複数の文字が挿入された場合、複数回発火することはありません。

私が見逃している簡潔な方法はありますか?それとも、.keydownを使用して、矢印キーやシフトなどでトリガーされるイベントをフィルタリングするべきでしょうか?私の主な懸念は、フィルタリングされるべきであると私が認識していないキーがあることです。(私はaltとCtrlを忘れるところでした。他にもあると思います。) しかし、その場合、キーが押されたままで複数の文字が挿入されていることをどのように検出するのでしょうか?

おまけに貼り付け(右クリックを含む)による変化も検出できるのですが、それに対する解決策は こちら .

解決方法は?

テキストボックスに 'input' イベントをバインドすることができます。この場合 毎回 を変更すると、何かを貼り付けたり(右クリックでも)、削除したり、何かを入力したりすることができます。

$('#myTextbox').on('input', function() {
    // do something
});

を使用する場合は change ハンドラを使用すると、ユーザーが入力ボックスの選択を解除した後にのみ実行されます。

ここに両方の例があります。 http://jsfiddle.net/6bSX6/