Событие Javascript, вызванное нажатием пробела - PullRequest
24 голосов
/ 01 июня 2011

Я пытаюсь вызвать событие, когда я нахожусь на странице и нажимаю пробел, но я не могу понять это. В настоящее время я пытаюсь использовать jQuery для достижения удовлетворительного результата.

Я пытался использовать keydown, keyup и keypress. Но кажется, что вы можете использовать его, только если вы что-то вводите в форму или поле.

Я хочу, чтобы при нажатии пробела вызывалось предупреждение.

Заранее спасибо!

Ответы [ 4 ]

40 голосов
/ 01 июня 2011

Эти события всплывают, поэтому, если вы пытаетесь вызвать событие, где бы вы ни находились (т.е. не на входе), просто привяжите обработчик к window:

$(window).keypress(function (e) {
  if (e.key === ' ' || e.key === 'Spacebar') {
    // ' ' is standard, 'Spacebar' was used by IE9 and Firefox < 37
    e.preventDefault()
    console.log('Space pressed')
  }
})

Также см. список всех .key значений .

6 голосов
/ 01 июня 2011

Попробуйте это:

$('input:text').keypress(function(e) {
    if (e.keyCode == 0 || e.keyCode == 32) // `0` works in mozilla and `32` in other browsers
       console.log('space pressed');
});
4 голосов
/ 16 апреля 2015

Этот код можно использовать:

$(window).keypress(function(e) {
  if (e.keyCode == 0 || e.keyCode == 32) {
    console.log('Space pressed');
  }
});


Explaination:
$(window).keypress(function(e) ждет, пока пользователь нажмет любую клавишу, и сохранит данные нажатой клавиши в аргументе 'e'.
Затем if (e.keyCode == 0 || e.keyCode == 32) проверяет, совпадает ли код нажатой клавиши с кодом пробела, то есть 0 или 32. Если возвращается значение false, тогда нажимается любая другая клавиша и код заканчивается.

Некоторые часто используемые коды клавиш:

  • забой: 8
  • вкладка: 9
  • введите: 13
  • сдвиг: 16
  • Ctrl: 17
  • альт: 18
  • заглушка: 20
  • побег: 27
  • (пробел): 32 * * тысяча тридцать шесть
  • 0-9: 48-57
  • а-г: 65-90
  • Numpad0-numpad9: 96-105
4 голосов
/ 01 июня 2011

Попытайтесь привязать ваш слушатель ключевого события к объекту jQuery $ (document);

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
  <head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
    <script type="text/javascript">
      $(document).ready(function() {
        $(document).keydown(function(e) {
          if (e.keyCode == '32') {
            alert('space');
          }
        });
      });
    </script>
  </head>
  <body>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...