Подія натискання клавіші (або клавіші) на елементі DIV


146

Як ви можете зафіксувати подію клавіші або натискання клавіші на елементі DIV (за допомогою jQuery)?

Що потрібно для фокусування елемента DIV?


2
Що означає "фокус" для діва?
Джонатан Фауст

1
jboyd, крім вкладки до нього, коли у нього є tabindex, ви можете використовувати javascript, щоб знайти його та викликати метод фокусування на ньому.
Брендан Енрік

2
@Lalchand ... ти можеш колись прийняти мою відповідь? :)
helle

Відповіді:


301

(1) Встановіть tabindexатрибут:

<div id="mydiv" tabindex="0" />

(2) Прив’язати до клавіатури:

 $('#mydiv').on('keydown', function(event) {
    //console.log(event.keyCode);
    switch(event.keyCode){
       //....your actions for the keys .....
    }
 });

Щоб встановити фокус на старт:

$(function() {
   $('#mydiv').focus();
});

Для видалення - якщо вам це не подобається - divмежа фокуса, встановлена outline: noneв CSS.

Для отримання додаткових можливостей див таблицю ключових кодівkeyCode .

Весь код передбачає, що ви використовуєте jQuery.

#

43
+1 tabindex є ключовим моментом, щоб зробити div "вибір". JQuery не потрібен, те ж саме працює з Angular так само, як і (я думаю) з подіями простого javascript.
Jukka Dahlbom

4
Яка підтримка браузера для цього?
knownasilya

27
tabindex є ключовою частиною, але не встановлюйте його для будь-якого значення, крім "0". Якщо зробити що-небудь вище 0, це зіпсує зчитувачі екранів для користувачів із вадами зору (це пропустить усе на сторінці та перейде до будь-якого табіндексу вище 0). tabindex = "0" робить його "табличним". ви можете мати нескінченні елементи з tabindex = "0"
zonabi

2
Також працює з <pre>!
dfmiller

2
Відмінно! Мені не вистачало атрибута tabindex, можливо тому, що DIV не може отримати фокус, якщо у них немає tabindex. Спасибі людино! Врятувало мені життя! EDIT: також працює з React
Vinícius Negrão

6

Ось приклад на звичайному JS:

document.querySelector('#myDiv').addEventListener('keyup', function (e) {
  console.log(e.key)
})
#myDiv {
  outline: none;
}
<div 
  id="myDiv"
  tabindex="0"
>
  Press me and start typing
</div>


Як це відповідає відповіді на питання рівняння?
Poul Bak

5

атрибут HTML tabindex вказує, чи може його елемент бути сфокусований, і якщо / де він бере участь у послідовній навігації по клавіатурі (зазвичай за допомогою Tabклавіші). Прочитайте веб-документи MDN для повної довідки.

Використання Jquery

Використання JavaScript


1
я насправді знайшов це, що шукає проблеми з стріляниною події фокусування, коли елементи керування дивом втратили фокус, говорять, щоб натиснути на панель прокрутки divs, просто додавши табулант до діва, це було
виправданням,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.