0

jQuery と ajax を使用して、自分のサイトでライブ検索を作成しようとしています。

ただし、検索ボックスにフォーカスがあり、別のブラウザー タブに移動するkeyup()と、検索ページに戻ったときに jQuery が関数をトリガーします。

私はこれをJSfiddleでモックアップしました

再現する手順:

  1. JSfiddle とその他のブラウザー タブを開きます
  2. テキスト ボックスにフォーカスを与える
  3. 別のブラウザ タブに移動
  4. 元のページ (JSfiddle) に戻る

予想/意図: keyup()トリガーされない

何が起こるか: keyup()トリガーされ、タイムスタンプで示されます

私は Javascript についてあまり詳しくなく、jQuery のドキュメントも読んだことがありますが、答えが思いつきません。

これは私が何か間違ったことをしているからですか?Javascript/jQuery またはブラウザの問題ですか? (Chrome を使用) どうすればそれを防ぐことができますか?

ありがとう!穏やかな。

アップデート

タブ間をクリックするだけでなく、Ctrl+Tab を使用した場合にのみトリガーされるようです。ページから離れてクリックすることで複製できますが、検索ページに戻るには Ctrl+Shift+Tab を使用します。

解決策は以下のとおりであり、 keyCode 9 を として返すと思いますがfalse、他の提案のために開いたままにします。

4

1 に答える 1

1

私もクロムを使用しています(win7で)。再現できません。ただし、1 つの解決策は、どのキーコード ( e.keyCode) が生成されているかを確認しreturn false、それが常に同じかどうかを確認することです。たとえば、keyCode が 37 の場合:

$('#search').keyup(function(e) {
    if(e.keyCode == 37) return false;
    $('#test').append('<li>'+e.timeStamp+'</li>');
});
​
于 2012-03-12T22:07:20.517 に答える