2

キーボードでオートコンプリート オプションに移動して [Enter] を押すと、他のブラウザー (例: Firefox 14.0.1) ではこのイベントが発生しますが、chrome (21.0.1180.60 m) では発生しません。イベントをフックするためにjqueryを使用しています:

    $('input').keydown(function (event) {
        if (event.which == 13) {
            var $txt = $(this);
            //settimeout req. for firefox to append autocomplete
            setTimeout(function () {
                //**chrome doesn't get here until you hit enter a second time
            }, 0);

        }
   });​

例: http://jsfiddle.net/a9vbe/4/

ここで何が起こっているのか、または可能な解決策は何か知っている人はいますか? コンピューターは指よりも高速であるため、代わりにキーアップイベントを使用すると問題が「修正」されますが、私はそうしません。Keydown (または Keypress) が望ましいです。

4

1 に答える 1

3

特に問題が修正されるため、このようなインスタンスでキーアップを実行しても問題はありません。問題は、キーダウン イベントが入力でイベントを発生させるのに十分な速さでデータ リストがテキスト ボックスに入力されないことです。その時点では、まだデータリスト自体に集中しています。これは、keyup の利点の 1 つの典型的な例です。

言うまでもなく、ユーザーがキーを放すとオートコンプリートが起動するため、誰かが理由もなく「F」キーを押したままにすると、1000x起動することはありません。

このような ajax / autocomplete の状況では、常に「keyup」を使用します。

于 2012-08-03T14:01:06.677 に答える