нажатие клавиши в JQuery перестает работать при отключении поля ввода - PullRequest
3 голосов
/ 16 января 2012

Я привязываю нажатие клавиши к документу, и в дополнение к выполнению некоторой команды (в данном случае оповещения) я также отключаю поле ввода.

  <script type="text/javascript" src="jquery.js"></script>
  <script type="text/javascript">
  $(document).keypress(function(e) {
   if (e.keyCode == 27) {
    alert("escape pressed");
    $("#inputField").attr('disabled','disabled');
   }
  });
  </script>

  <input type="text" id="inputField" />

Проблема заключается в том, что я нажимаюescape in inputField, escape больше не вызывает оповещение, пока я снова не нажму вручную на странице.

Кто-нибудь знает, почему это так или иначе я могу отключить поле ввода нажатием клавиши, не теряя своего внимания наокно?

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Я думаю, что это специфическая проблема Firefox. Фокус блокируется в отключенном текстовом поле, и нажатия клавиш не срабатывают, но клавиша Tab работает. В Chrome события нажатия происходят правильно после отключения текстового поля. В любом случае вы можете использовать свойство tabIndex и установить фокус на какой-то другой элемент перед отключением текстового поля.

 $("#cover").focus();
 $("#inputField1").attr('disabled', 'disabled');
 alert("enter pressed");

см. Демо здесь: ( клавиша escape не работает в Chrome. Я изменил ее для ввода клавиши ) http://jsfiddle.net/diode/4Xvqj/show

..

0 голосов
/ 16 января 2012

Описание

Использовать метод jQuery .keyup().Вы также забыли подождать, пока DOM не станет полностью доступным.Вы можете установить фокус на элементе тела в вашем .keyup() методе.

Проверьте мой образец и эту демонстрацию jsFiddle

Пример

$(function() {
  $(document).keyup(function(e) {
   if (e.keyCode == 27) {
    alert("escape pressed");
    $("#inputField").attr('disabled','disabled');
    $("body").focus();
   }    
  });
});

Обновление

Функция jQuery .focus() работает не на каждом элементе, например, body в Firefox.Вы можете попытаться установить фокус на другом элементе на своей странице.

...