Menangkap peristiwa tekan tombol (atau keydown) pada elemen DIV


146

Bagaimana Anda menjebak penekanan tombol atau acara kunci pada elemen DIV (menggunakan jQuery)?

Apa yang diperlukan untuk memberikan fokus elemen DIV?


2
Apa artinya "fokus" untuk div?
Jonathon Faust

1
jboyd selain menabraknya ketika memiliki tabindex, Anda dapat menggunakan javascript untuk menemukannya dan memanggil metode fokus di atasnya.
Brendan Enrick

2
@Lalchand ... bisakah kamu menerima jawaban saya kapan saja? :)
helle

Jawaban:


301

(1) Setel tabindexatribut:

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

(2) Mengikat ke keydown:

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

Untuk mengatur fokus pada awal:

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

Untuk menghapus - jika Anda tidak menyukainya - divperbatasan fokus, atur outline: nonedi CSS.

Lihat tabel kode kunci untuk lebih banyak keyCodekemungkinan.

Semua kode dengan asumsi Anda menggunakan jQuery.

#

43
Tabindex +1 adalah titik kunci di sini untuk membuat div 'dapat dipilih'. JQuery tidak perlu, hal yang sama berfungsi dengan Angular serta (saya kira) dengan peristiwa javascript biasa.
Jukka Dahlbom

4
Apa dukungan browser untuk ini?
knownasilya

27
tabindex adalah bagian kunci, tetapi jangan setel ke nilai apa pun selain "0". Membuatnya apa pun di atas 0 akan mengacaukan pembaca layar untuk pengguna tunanetra (itu akan melewatkan semua yang ada di halaman dan langsung ke tabindex di atas 0). tabindex = "0" menjadikannya "tabbable." Anda dapat memiliki elemen tanpa batas dengan tabindex = "0"
zonabi

2
Bekerja dengan <pre> juga!
dfmiller

2
Luar biasa! Saya kehilangan atribut tabindex, mungkin karena DIV tidak dapat menerima fokus kecuali mereka memiliki tabindex. Terima kasih sobat! Menyelamatkan hidupku! EDIT: bekerja dengan React juga
Vinícius Negrão

6

Di sini contoh di JS polos:

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>


Bagaimana ini menjawab pertanyaan?
Poul Bak

5

atribut HTML tabindex menunjukkan jika elemennya dapat difokuskan, dan jika / di mana ia berpartisipasi dalam navigasi keyboard berurutan (biasanya dengan Tabtombol). Baca MDN Web Documents untuk referensi lengkap.

Menggunakan Jquery

Menggunakan JavaScript


1
saya benar-benar menemukan ini mencari masalah dengan peristiwa fokus keluar ketika kontrol pada fokus yang hilang mengatakan untuk mengklik pada scroll bar divs, cukup menambahkan tabstop ke div adalah perbaikan, jadi terima kasih banyak
MikeT
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.