DIV öğesinde tuşa basma (veya tuşa basma) olayını yakalayın


150

Bir DIV öğesinde (jQuery kullanarak) tuşa basma veya tuşa basma olayını nasıl yakalarsınız?

DIV öğesine odaklanmak için ne gereklidir?


2
Bir div için "odaklanma" ne anlama geliyor?
Jonathon Faust

1
jboyd, bir sekme dizini olduğunda sekme yapmaktan başka, onu bulmak için javascript kullanabilir ve üzerinde odak yöntemini çağırabilirsiniz.
Brendan Enrick

2
@Lalchand ... cevabımı bir şekilde kabul edebilir misin? :)
helle

Yanıtlar:


306

(1) tabindexÖzniteliği ayarlayın :

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

(2) Keydown'a bağlan:

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

Odağı başlangıca ayarlamak için:

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

divOdak kenarlığını kaldırmak için - beğenmediyseniz - outline: noneCSS'de ayarlayın .

Daha fazla olasılık için anahtar kodları tablosuna bakın keyCode.

JQuery kullandığınızı varsayan kodun tamamı.

#

45
+1 sekme dizini, div'i 'seçilebilir' yapmak için buradaki kilit noktadır. JQuery gerekli değil, aynı şey hem Angular hem de (sanırım) düz javascript olayları için çalışıyor.
Jukka Dahlbom

4
Bunun için tarayıcı desteği nedir?
bilinenasilya

27
tabindex anahtar bir kısımdır, ancak "0" dışında herhangi bir değere ayarlamayın. 0'ın üzerinde bir şey yapmak, görme engelli kullanıcılar için ekran okuyucuları karıştıracaktır (sayfadaki her şeyi atlayacak ve doğrudan 0'ın üzerindeki herhangi bir sekme dizinine gidecektir). tabindex = "0" onu "sekmeli" yapar. tabindex = "0" ile sonsuz öğelere sahip olabilirsiniz
zonabi

2
<pre> ile de çalışır!
dfmiller

2
Mükemmel! Tabindex özniteliğini kaçırıyordum, çünkü DIV'ler bir sekme dizini olmadığı sürece odak alamıyor olabilir. Teşekkürler dostum! Hayatımı kurtardı! DÜZENLEME: React ile de çalışır
Vinícius Negrão

7

tabindex HTML niteliği, öğesinin odaklanıp odaklanamayacağını ve sıralı klavye gezinmesine (genellikle Tabtuşla) katılıp katılmayacağını / nerede olduğunu gösterir . Tam referans için MDN Web Belgelerini okuyun .

Jquery kullanma

JavaScript kullanma


1
aslında bunu, odaklanma olayının tetiklenmesiyle ilgili bir sorunu ararken buldum, odak kaybolan odak üzerindeki kontroller divs kaydırma çubuğunu tıklamayı söylediğinde, basitçe sekme çubuğunu div'e eklemek düzeltildi, bu yüzden çok teşekkür ederim
MikeT

6

İşte düz JS'deki örnek:

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>


Bu soruya nasıl cevap veriyor?
Poul Bak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.