С помощью jQuery, как мне узнать, какая клавиша была нажата при привязке к событию нажатия клавиши?
$('#searchbox input').bind('keypress', function(e) {});
Я хочу инициировать отправку при ENTERнажатии.
[Обновить]
Несмотря на то, что я нашел ответ (или лучше: один) сам, кажется, есть место для вариаций;)
Есть ли разница между keyCode
и which
- особенно если я просто ищу ENTER, который никогда не будет ключом Unicode?
Некоторые браузеры предоставляют одно свойство, а другие предоставляют другое?
Ответы:
На самом деле это лучше:
источник
e.which
того, какое событие вы используете.e.which
не устанавливается (остается0
), ноe.keyCode
есть (9
). См. Stackoverflow.com/questions/4793233/… почему это важно.Попробуй это
источник
Если вы используете jQuery UI, у вас есть переводы для общих кодов ключей. В ui / ui / ui.core.js :
Есть также некоторые переводы в tests / simulate / jquery.simulate.js, но я не смог найти ничего в основной библиотеке JS. Имейте в виду, я просто нашел источники. Может быть, есть какой-то другой способ избавиться от этих магических чисел.
Вы также можете использовать String.charCodeAt и .fromCharCode:
источник
Uncaught TypeError: String.charCodeAt is not a function
Я думаю, что вы хотели сказать'\r'.charCodeAt(0) == 13
Учитывая, что вы используете jQuery, вы должны использовать .which. Да, разные браузеры устанавливают разные свойства, но jQuery нормализует их и устанавливает значение .which в каждом случае. См. Документацию по адресу http://api.jquery.com/keydown/ :
источник
... этот пример предотвращает отправку формы (обычно основное намерение при захвате нажатия клавиши # 13):
источник
редактировать: это работает только для IE ...
Я понимаю, что это старая публикация, но кто-то может найти это полезным.
События клавиш отображаются, поэтому вместо использования значения кода ключа вы также можете использовать значение ключа, чтобы сделать его немного более читабельным.
Вот шпаргалка с сопоставленными ключами, которые я получил из этого блога
источник
e.key
собственности.источник
event.which
.Проверьте отличный плагин jquery.hotkeys, который поддерживает комбинации клавиш:
источник
Надеюсь, это поможет вам !!!
источник
Это почти полный список ключевых кодов:
источник
Хорошо, я был слепым
будет содержать код ASCII ключа.
Смотрите https://developer.mozilla.org/En/DOM/Event.which
источник
Вот подробное описание поведения различных браузеров http://unixpapa.com/js/key.html
источник
Я просто дополню код решения этой строкой
e.preventDefault();
. В случае ввода поля формы мы не посещаем, чтобы отправить на нажатой клавишу вводаисточник
Добавьте скрытую отправку, а не тип скрытой, просто отправьте с помощью style = "display: none". Вот пример (удалены ненужные атрибуты из кода).
Он принимает ключ ввода изначально, не требует JavaScript, работает в любом браузере.
источник
Вот расширение jquery, которое будет обрабатывать нажатие клавиши ввода.
Рабочий пример можно найти здесь http://jsfiddle.net/EnjB3/8/
источник
Ведьма;)
Демо: http://jsfiddle.net/molokoloco/hgXyq/24/
источник
Используйте
event.key
и современный JS!Нет числовых кодов больше. Вы можете проверить ключ напрямую. Так , например
"Enter"
,"LeftArrow"
,"r"
, или"R"
.Mozilla Docs
Поддерживаемые браузеры
источник
Вы должны иметь firbug, чтобы увидеть результат в консоли
источник
Некоторые браузеры используют keyCode, другие используют который. Если вы используете jQuery, вы можете надежно использовать то, что jQuery стандартизирует. Фактически,
источник
Согласно ответу Килиана:
Если важен только ввод, нажмите клавишу:
источник
Самый простой способ, который я делаю, это:
источник
event.which
вместоevent.keyCode
. Из jQuery API :The event.which property normalizes event.keyCode and event.charCode. It is recommended to watch event.which for keyboard key input.
Я только что сделал плагин для JQuery, который позволяет проще
keypress
события. Вместо того, чтобы найти номер и вставить его, все, что вам нужно сделать, это:Как это использовать
Это так просто. Обратите внимание, что
theKeyYouWantToFireAPressEventFor
это не число, а строка (например,"a"
чтобы стрелять при Aнажатии,"ctrl"
чтобы стрелять, когда нажата, или, в случае числа, просто без кавычек. Это будет срабатывать, когдаCTRL (control)1
1 нажатии.)Пример / Код:
Показать фрагмент кода
Поскольку длинная версия такая ... ну ... длинная, я сделал для нее ссылку на PasteBin:
http://pastebin.com/VUaDevz1
источник
То
event.keyCode
иevent.which
испорчены. См. Ответ @Gibolt выше или проверьте документацию: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEventevent.key
следует использовать вместоkeypress
событие также не рекомендуется: https://developer.mozilla.org/en-US/docs/Web/API/Document/keypress_eventисточник
Попробуй это:
источник