Как мне связать функцию с клавишами со стрелками влево и вправо в Javascript и / или jQuery? Я посмотрел на плагин js-hotkey для jQuery (оборачивает встроенную функцию связывания, чтобы добавить аргумент для распознавания определенных клавиш), но, похоже, он не поддерживает клавиши со стрелками.
javascript
jquery
keyboard
key-bindings
Алекс С
источник
источник
Ответы:
Если вам нужно поддерживать IE8, запустите тело функции как
e = e || window.event; switch(e.which || e.keyCode) {
.(редактировать 2020)
Обратите внимание, что
KeyboardEvent.which
теперь не рекомендуется. Посмотрите этот пример, используяKeyboardEvent.key
более современное решение для обнаружения клавиш со стрелками.источник
e.which
как jQuery рекомендует для кросс-браузер, используетe.preventDefault()
вместоreturn false
(return false
в обработчике событий jQuery вызывает обаe.preventDefault()
иe.stopPropagation()
, и второй, который будет вызывать сбой любых последующих добавленных событий, так как событие не будет распространяться на них), и на конец коммутатора, будет возвращаться без вызова,e.preventDefault()
если это какая-то другая клавиша, кроме искомой, которая не мешает другому использованию ключа, и вместо$.ui.keyCode.DOWN
этого сравнивается с числами (НАМНОГО быстрее).$.ui.keyCode.DOWN
вы ищите$
в своей лексической области, не находя его, поднимаясь на уровень ... ищите$
, повторяйте до тех пор, пока в глобальной области не найдете его в глобальномwindow
, доступ$
в окне, доступui
вwindow.$
, доступkeyCode
вwindow.$.ui
, доступDOWN
наwindow.$.ui.keyCode
добраться до примитивного значения , которое вы хотите сравнить, а затем сделать ваши фактическое сравнения. Независимо от того, имеет ли эта скорость значение для вас, это личное решение, я просто имею тенденцию избегать 4-х уровней доступа, когда есть такая ситуация, когда я могу так же легко написать / прокомментировать примитив.Коды символов:
источник
e.which
а неe.keyCode
для большей поддержки браузера. Смотрите мой комментарий ниже.Вы можете использовать код клавиши клавиш со стрелками (37, 38, 39 и 40 слева, вверх, вправо и вниз):
Проверьте приведенный выше пример здесь .
источник
The event.which property normalizes event.keyCode and event.charCode
- api.jquery.com/event.whichЭто немного поздно, но у HotKeys есть очень серьезная ошибка, которая приводит к тому, что события выполняются несколько раз, если вы присоединяете более одной горячей клавиши к элементу. Просто используйте простой jQuery.
источник
Я просто объединил лучшие биты из других ответов:
источник
Вы можете использовать KeyboardJS. Я написал библиотеку для задач, как это.
Оформить заказ библиотеки здесь => http://robertwhurst.github.com/KeyboardJS/
источник
Краткое решение с использованием простого Javascript (спасибо Sygmoral за предложенные улучшения):
Также см. Https://stackoverflow.com/a/17929007/1397061 .
источник
document.addEventListener('keydown', myFunction);
Вы уверены, что jQuery.HotKeys не поддерживает клавиши со стрелками? Я уже порвал их демо-версию и наблюдал за работой влево, вправо, вверх и вниз, когда тестировал их в IE7, Firefox 3.5.2 и Google Chrome 2.0.172 ...
РЕДАКТИРОВАТЬ : кажется, jquery.hotkeys был перемещен в Github: https://github.com/jeresig/jquery.hotkeys
источник
Вместо использования,
return false;
как в примерах выше, вы можете использовать то,e.preventDefault();
что делает то же самое, но легче для понимания и чтения.источник
return false;
иe.preventDefault();
не совсем то же самое. См. Stackoverflow.com/a/1357151/607874Пример чистого JS с движением вправо или влево
источник
Вы можете использовать jQuery bind:
источник
Вы можете проверить
arrow key
, нажата ли кнопка :источник
предотвратить стрелку, доступную только для любого объекта, кроме SELECT, на самом деле у меня нет тестов на другом объекте LOL. но он может остановить событие стрелки на странице и тип ввода.
я уже пытаюсь заблокировать стрелку влево и вправо, чтобы изменить значение объекта SELECT с помощью «e.preventDefault ()» или «return false» для событий «kepress», «keydown» и «keyup», но оно все еще меняет значение объекта. но событие все еще говорит вам, что стрелка была нажата.
источник
Надежная библиотека Javascript для ввода ввода с клавиатуры и введенных комбинаций клавиш. У него нет зависимостей.
http://jaywcjlove.github.io/hotkeys/
источник
Я пришел сюда в поисках простого способа позволить пользователю, когда он сфокусирован на вводе, использовать клавиши со стрелками для +1 или -1 для числового ввода. Я так и не нашел хорошего ответа, но сделал следующий код, который, кажется, отлично работает - сделав этот сайт сейчас.
источник
С кофе и Jquery
источник