Почему JQuery keydown работает для окна, а не для текстового поля? - PullRequest
3 голосов
/ 09 октября 2008

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

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

но не это:

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

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

Ответы [ 6 ]

7 голосов
/ 10 октября 2008

Проверено это в 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> 
4 голосов
/ 03 декабря 2008

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

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

Присоединение события к $(document) кажется магическими вещами здесь.

Хотя ваш первый кусочек кода действительно должен работать и в IE. Кажется, дело в ошибке в jQuery, которая, будем надеяться, скоро будет исправлена ​​...

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

3 голосов
/ 21 октября 2008

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

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

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

1 голос
/ 09 октября 2008

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

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

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

0 голосов
/ 24 мая 2011
$('#searchInput').keydown(function() {
    alert('testing');
});

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

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

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

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

0 голосов
/ 27 марта 2010

Поскольку ключевые события не поддерживаются в объекте 'window'.

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

Но только на «документе»:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...