บันทึกการกดปุ่ม (หรือการกดคีย์) เหตุการณ์บนองค์ประกอบ DIV


146

คุณดักเหตุการณ์การกดปุ่มหรือการกดปุ่มบนองค์ประกอบ DIV (โดยใช้ jQuery) ได้อย่างไร

สิ่งที่จำเป็นในการให้ความสำคัญกับองค์ประกอบ DIV คืออะไร


2
"โฟกัส" หมายถึงอะไรสำหรับ div
Jonathon Faust

1
jboyd นอกเหนือจากการทำแท็บเมื่อมี tabindex คุณสามารถใช้จาวาสคริปต์เพื่อค้นหาและเรียกใช้วิธีการโฟกัสบนมัน
Brendan Enrick

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 เช่นเดียวกับ (ฉันคิดว่า) กับเหตุการณ์จาวาสคริปต์ธรรมดา
Jukka Dahlbom

4
เบราว์เซอร์รองรับสิ่งนี้คืออะไร
knownasilya

27
tabindex เป็นส่วนสำคัญ แต่อย่าตั้งเป็นค่าอื่นใดนอกจาก "0" การทำทุกอย่างที่เหนือ 0 จะทำให้ผู้อ่านหน้าจอยุ่งเหยิงสำหรับผู้ใช้ที่มีความบกพร่องทางสายตา (จะข้ามทุกอย่างบนหน้าเว็บและตรงไปที่ Tabindex ด้านบน 0) tabindex = "0" ทำให้เป็น "tabbable" คุณสามารถมีองค์ประกอบที่ไม่มีที่สิ้นสุดด้วย tabindex = "0"
zonabi

2
ทำงานร่วมกับ <pre> เช่นกัน!
dfmiller

2
ยอดเยี่ยม ฉันขาดแอตทริบิวต์ tabindex อาจเป็นเพราะ DIV ไม่สามารถรับโฟกัสได้หากไม่มี tabindex ขอบคุณคน! ช่วยชีวิตฉันไว้! แก้ไข: ทำงานร่วมกับ React เช่นกัน
ViníciusNegrã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>


สิ่งนี้จะตอบสนองการเปลี่ยนแปลงได้อย่างไร?
พอลบาก

5

แอตทริบิวต์tabindex HTML บ่งชี้ว่าองค์ประกอบสามารถโฟกัสได้หรือไม่และ / หรือมีส่วนร่วมในการนำทางคีย์บอร์ดตามลำดับหรือไม่ (โดยปกติจะมีTabคีย์) อ่านMDN Web Docsสำหรับการอ้างอิงแบบเต็ม

ใช้ Jquery

ใช้จาวาสคริปต์


1
ฉันพบสิ่งนี้จริง ๆ แล้วกำลังมองหาปัญหาของเหตุการณ์ focusout เมื่อตัวควบคุมบน div สูญหายโฟกัสพูดว่าให้คลิกที่แถบเลื่อน divs เพียงแค่เพิ่ม tabstop ให้ div เป็นการแก้ไขดังนั้นขอบคุณมาก
MikeT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.