1

入力が変更されたかどうかを確認しようとしています。問題は - このコードを使用する場合:

trigger.keyup(function() {
    current_input = getSearchString();
    is_changed = (current_input != previous_input);
    previous_input = current_input;
});

このロジックは、ユーザーが "Q" などを押してから少し遅れて "E" を押し (入力値は既に "QE" になっています)、最初に "Q" キーを離すと壊れます。previous_input「QE」に設定されます。ユーザーが「E」キーを離すと、スクリプトは等しい文字列を比較します。したがって、入力が実際に変更されたとき、私のスクリプトではそうではありません。これを修正する方法、またはこれを行う別の方法はありますか (html5 イベント 'input' を使用しない)。

4

2 に答える 2

6

keydown の代わりに を使用するとkeyup、ユーザーがキーを解放するかどうかに依存しなくなります

于 2013-04-26T13:20:55.980 に答える
0

キーイベントだけに依存することは、信頼できるメカニズムではありません。例: ユーザーがクリップボードからテキストを貼り付けた場合、またはテキストをテキスト ボックスにドラッグ アンド ドロップした場合 (はい、dnd はテキスト ボックスに対して機能します)。

textchanged考えられるすべてのチャネルを考慮するには、イベントを使用できます。詳細はこちら: http://zurb.com/playground/jquery-text-change-custom-event

$('#selector').bind('textchange', function (e, prevText) {
    // do your stuff here
});
于 2013-04-26T13:25:22.303 に答える