2012-03-12 2 views
0

Я пытаюсь создать живой поиск на своем сайте с помощью jQuery и ajax.jQuery keyup срабатывает при переходе на страницу?

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

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

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

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

Ожидаемое/предназначен:keyup() не запускается

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

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

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

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

UPDATE

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

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

+0

им использованияКонтактного хром тоже и не может воспроизвести его –

+0

есть ли текстовое поле фокуса перед вами вкладкой прочь? Это позор, я надеялся, что сделал все, что мог, чтобы помочь! –

+0

Это нормально, но зачем вам фильтровать такие события? Просто прочитайте значение ввода. – kirilloid

ответ

1

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

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

это, конечно, устранит этот ключ из вашей функции keyup, поэтому вам нужно быть уверенным, что вы не хотите проверять этот конкретный ключ. – ahren

+0

Я также могу воспроизвести его в Safari. Интересно, что keyCode - это 9, который является вкладкой. –

+0

Например: 'Ctrl + V' также генерирует событие« keyup ». Я не уверен, что фильтрация действительно необходима. – kirilloid

 Смежные вопросы

  • Нет связанных вопросов^_^