Почему JQuery keydown работает для окна, но не для текстового поля?

Почему это работает:

$(window).keydown(function(event){
    alert(event.keyCode);
});

но не это:

$('#ajaxSearchText').keydown(function(event){
    alert(event.keyCode);
});

Я тестирую Firefox 3. Что интересно, ни один из них не работает в IE7.

Предложение: приведите минимально возможный автономный пример, иллюстрирующий вашу проблему.

Shog9 09.10.2008 19:24
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
3
1
21 900
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Попробуйте использовать

$('#ajaxSearchText').keyup(function(event){
    alert(event.keyCode);
});

у меня работает отлично. Также проверьте идентификатор текстового поля

Ответ принят как подходящий

Проверял это в Chrome, IE7 и Firefox 3.0.3. Работает как надо. jQuery версии 1.2.6.

<html> 
  <head> 
    <script type = "text/javascript" src = "jquery-1.2.6.js"></script> 
    <script type = "text/javascript"> 
      $(function() 
      {
        $("#ajaxSearchText").keydown(function(event)
        {
          alert(event.keyCode);
        });
      });
    </script> 
  </head> 
  <body> 
    <input type = "text" id = "ajaxSearchText"></input>
  </body> 
</html> 

Для всех ваших потребностей в нажатии / нажатии / клавиатуре используйте плагин горячих клавиш jQuery.

Увидел это несколько месяцев назад, и это не перестает впечатлять. Следуйте переходу для демонстрации плагина ... http://code.google.com/p/js-hotkeys/

Он отображает ВСЕ клавиши на клавиатуре, включая комбинации. Надеюсь, это поможет!

Я добавлю комментарий, чтобы помочь всем, кто наткнется на это, как и я. Версия этого плагина, которая работает на jQuery 1.4.2 и более поздних версиях, находится здесь: github.com/jeresig/jquery.hotkeys

taxilian 21.05.2010 02:17

В jQuery уже есть все, что нужно для ответа на этот вопрос, плагин особо не поможет.

ars265 08.10.2012 20:11

Извините, ars265, это неправильно. ОБЯЗАТЕЛЬНО расскажите нам, как можно легко использовать собственный jQuery для захвата ctrl + alt + del. И если вы используете коды ascii / key, которые вы уже потеряли ...

penderi 12.10.2012 11:38

Чтобы исправить проблемы в IE6 и IE7, попробуйте следующее ...

$(function() 
{
    $(document).keydown(function(event){
        alert(event.keyCode);
    });
});

Прикрепление события к $(document), кажется, здесь волшебно.

Однако ваш первый фрагмент кода действительно должен работать и в IE. Похоже, это связано с ошибкой в ​​jQuery, которая, надеюсь, скоро будет исправлена ​​...

Вот ссылка на отчет об ошибке в jQuery. https://bugs.jquery.com/ticket/3614

этот отчет об ошибке был закрыт как «не ошибка», потому что ключевые события не поддерживаются в «окне»

Simon_Weaver 27.03.2010 04:11

Также см. Здесь: stackoverflow.com/questions/1717897/…

Tjorriemorrie 27.05.2010 14:44

Потому что ключевые события не поддерживаются в объекте «окно».

http://www.w3schools.com/jsref/obj_window.asp

Но только в документе:

http://www.w3schools.com/jsref/dom_obj_event.asp

Если и сработало, значит, это была ошибка в jQuery.

$('#searchInput').keydown(function() {
    alert('testing');
});

не будет работать. Однако, если вы оберните его функцией:

$(function()
{
    $('#searchInput').keydown(function() {
        alert('testing');
    });
});

это будет работать.

Без этого объявления функции он работает только с такими объектами, как документ и окно.

Другие вопросы по теме