JQuery Keyup сработал при переходе на страницу? - PullRequest
0 голосов
/ 13 марта 2012

Я пытаюсь создать живой поиск на моем сайте, используя jQuery и ajax.

Однако, если окно поиска имеет фокус, и я перехожу на другую вкладку браузера, jQuery вызывает функцию keyup(), когда я возвращаюсь на страницу поиска.

Я высмеял этов JSfiddle

Шаги для воспроизведения:

  1. Откройте JSfiddle и любую другую вкладку браузера
  2. Дайтефокус текстового поля
  3. Перейти к другой вкладке браузера
  4. Вернуться на исходную страницу (JSfiddle)

Ожидаемый / предполагаемый: keyup() не сработало

Что происходит: keyup() сработало, как показывает отметка времени

Я не очень разбираюсь в Javascript, и я прочиталjQuery документация, но я не могу придумать ответ.

Это происходит, потому что я делаю что-то не так?Это проблема с Javascript / jQuery или браузером?(С помощью Chrome) Как я могу предотвратить это?

Спасибо!Будьте осторожны.

ОБНОВЛЕНИЕ

Похоже, что он срабатывает только при использовании Ctrl + Tab, а не просто щелкая между вкладками.Может быть воспроизведен путем нажатия кнопки со страницы, но Ctrl + Shift + Tab, чтобы вернуться на страницу поиска.

Я бы предположил, что решение, как упомянуто ниже, возвращает keyCode 9 как false, но оставит его открытым для других предложений.

1 Ответ

1 голос
/ 13 марта 2012

Я также использую хром (на win7).Не могу воспроизвести.Однако одним из решений для вас было бы проверить, какой код ключа (e.keyCode) генерируется, и return false, если он всегда один и тот же.Например, если keyCode 37:

$('#search').keyup(function(e) {
    if(e.keyCode == 37) return false;
    $('#test').append('<li>'+e.timeStamp+'</li>');
});
​
...