Событие jQuery Keydown не работает в Chrome

Я использую следующий код JQuery для захвата событий keydown в DIV:

$("#pnlPreview").keydown(pnlPreview_onKeyDown);

Вот конкретные комбинации клавиш, которые я пытаюсь запечатлеть:

  • SHIFT + INSERT
  • SHIFT + DELETE
  • CTRL + INSERT
  • CTRL + DELETE

Хотя этот код отлично работает в IE, он не работает в Chrome. Я использую последний браузер Chrome (38.0.2125.104) под Windows 7.

Может кто-нибудь подсказать, пожалуйста, как запечатлеть эти комбинации клавиш в Google Chrome?

Смотрите это jsfiddle: jsfiddle.net/fx7do2cf/7. Это наиболее точно дублирует то, что у меня есть в моем проекте. События нажатия клавиш обнаруживаются в IE и не обнаруживаются в Chrome.

1 ответ

Решение

Реальная проблема заключалась не в том, что Chrome не захватывал события нажатия клавиш, а в том, что фокус нельзя было установить на div в Chrome без атрибута tabIndex на div. Хотя фокус может быть установлен на div без атрибута tabindex в IE, в Chrome его нельзя установить.

Все кредиты для решения этой проблемы должны идти в Spokey. Он сыграл важную роль в определении реальной проблемы и в ее решении.

Попробуйте сделать событие keydown как

$(document).on("keydown",'<selector>',function(event){
  alert("You clicked " + event.keyCode);
  // code
})

Для вышеуказанного случая используйте

$(document).on("keydown",'#pnlPreview', pnlPreview_onKeyDown);
Другие вопросы по тегам