เฮ้ ในฐานะผู้จัดหากล่องรายการฉันมีส่วนแบ่งที่ยุติธรรมของประสบการณ์ที่เกี่ยวข้องกับปัญหาทุกประเภทที่เกี่ยวข้องกับกล่องรายการ หนึ่งในปัญหาทั่วไปที่ผู้ใช้มักเผชิญคือการจัดการกิจกรรมแป้นพิมพ์ในกล่องรายการ ในโพสต์บล็อกนี้ฉันจะแบ่งปันเคล็ดลับและเทคนิคบางอย่างเกี่ยวกับวิธีจัดการกิจกรรมคีย์บอร์ดในกล่องรายการอย่างมีประสิทธิภาพ
ก่อนอื่นเรามาทำความเข้าใจว่าทำไมการจัดการกิจกรรมคีย์บอร์ดในกล่องรายการเป็นสิ่งสำคัญ ในหลายแอปพลิเคชันกล่องรายการจะใช้เพื่อแสดงรายการของรายการและผู้ใช้จะต้องสามารถนำทางผ่านรายการเหล่านี้โดยใช้แป้นพิมพ์ ตัวอย่างเช่นพวกเขาอาจต้องการใช้ปุ่มลูกศรขึ้นและลงเพื่อเลือกรายการที่แตกต่างกันหรือปุ่ม ENTER เพื่อดำเนินการในรายการที่เลือก หากไม่มีการจัดการเหตุการณ์แป้นพิมพ์ที่เหมาะสมประสบการณ์ผู้ใช้อาจทำให้หงุดหงิดจริงๆ
การจัดการเหตุการณ์แป้นพิมพ์พื้นฐาน
เหตุการณ์แป้นพิมพ์พื้นฐานที่สุดที่คุณจะต้องจัดการสำหรับกล่องรายการคือกิจกรรมคีย์ลูกศร (ขึ้นและลง) และเหตุการณ์คีย์ Enter เริ่มต้นด้วยเหตุการณ์สำคัญลูกศร
เมื่อผู้ใช้กดปุ่มลูกศรขึ้นคุณจะต้องเลื่อนการเลือกหนึ่งรายการในกล่องรายการ ในทำนองเดียวกันเมื่อพวกเขากดปุ่มลูกศรลงคุณจะต้องเลื่อนการเลือกลงหนึ่งรายการ นี่คือตัวอย่างง่ายๆของวิธีที่คุณสามารถทำได้ใน JavaScript:
const listbox = document.getElementById ('mylistbox'); listbox.addeVentListener ('keydown', ฟังก์ชั่น (เหตุการณ์) {ถ้า (event.key === 'Arrowup') {const selectedIndex = listbox.selectedIndex; ถ้า (selectedIndex> 0) {listbox.selectedIndex = selectedIndex - 1;}}} (selectedIndex <listbox.options.length - 1) {listbox.selectedIndex = selectedIndex + 1;}}});
ในรหัสนี้ก่อนอื่นเราจะได้รับการอ้างอิงถึงองค์ประกอบกล่องรายการโดยใช้ ID จากนั้นเราเพิ่มไฟล์คีย์ดาวน์ฟังเหตุการณ์ไปยังกล่องรายการ ภายในผู้ฟังเหตุการณ์เราตรวจสอบว่าคีย์ที่กดเป็นปุ่มลูกศรขึ้นหรือลงหรือไม่ หากเป็นคีย์ ROROW UP และมีรายการด้านบนของที่เลือกในปัจจุบันเราจะเลื่อนการเลือกขึ้น หากเป็นปุ่มลูกศรลงและมีรายการด้านล่างของที่เลือกในปัจจุบันเราจะเลื่อนการเลือกลง
ตอนนี้เรามาพูดคุยเกี่ยวกับเหตุการณ์ ENTER เมื่อผู้ใช้กดปุ่ม ENTER ในขณะที่เลือกรายการในกล่องรายการคุณอาจต้องการดำเนินการบางอย่างเช่นการเปิดมุมมองโดยละเอียดของรายการที่เลือกหรือทำการค้นหาตามค่าที่เลือก นี่คือวิธีที่คุณสามารถจัดการเหตุการณ์ ENTER Key:
listbox.addeVentListener ('keydown', ฟังก์ชั่น (เหตุการณ์) {ถ้า (event.key === 'Enter') {const selectedIndex = listbox.SelectedIndex; constelectedValue = listbox.options [selectedIndex] .value; // ดำเนินการบางอย่าง
ในรหัสนี้เราเพิ่มไฟล์อีกครั้งคีย์ดาวน์ฟังเหตุการณ์ไปยังกล่องรายการ ภายในผู้ฟังเหตุการณ์เราตรวจสอบว่าคีย์ที่กดคือปุ่ม ENTER หรือไม่ ถ้าเป็นเช่นนั้นเราจะได้รับดัชนีของรายการที่เลือกแล้วรับค่าของรายการนั้น จากนั้นคุณสามารถใช้ค่านี้เพื่อดำเนินการใด ๆ ที่คุณต้องการ


การจัดการกิจกรรมคีย์บอร์ดขั้นสูง
นอกเหนือจากคีย์ลูกศรพื้นฐานและป้อนเหตุการณ์สำคัญแล้วยังมีเหตุการณ์แป้นพิมพ์อื่น ๆ ที่คุณอาจต้องการจัดการเพื่อประสบการณ์การใช้งานที่ได้รับการปรับปรุงมากขึ้น ตัวอย่างเช่นคุณอาจต้องการจัดการหน้าและคีย์ลงหน้าเพื่อให้ผู้ใช้สามารถเลื่อนผ่านกล่องรายการได้อย่างรวดเร็ว
นี่คือวิธีที่คุณสามารถจัดการกับหน้าและคีย์ลงหน้า:
listbox.addeVentListener ('keydown', ฟังก์ชั่น (เหตุการณ์) {ถ้า (event.key === 'pageUp') {const visibleitems = 10; // จำนวนรายการที่มองเห็นได้ในกล่องรายการ constelectedIndex = listbox.selectedIndex; listbox.selectedIndex = 0; listbox.selectedIndex = listbox.options.length - 1;}}});
ในรหัสนี้เราเพิ่มไฟล์คีย์ดาวน์ฟังเหตุการณ์ไปยังกล่องรายการและตรวจสอบว่าคีย์ที่กดเป็นคีย์หน้าหรือหน้าลงหรือไม่ หากเป็นคีย์ Page Up เราจะเลื่อนการเลือกตามจำนวนรายการที่มองเห็นได้ในกล่องรายการ หากเป็นคีย์หน้าลงเราจะเลื่อนการเลือกลงตามจำนวนรายการที่มองเห็นได้
การจัดการแป้นพิมพ์ลัดอื่น ๆ
คุณอาจต้องการใช้แป้นพิมพ์คีย์บอร์ดที่กำหนดเองสำหรับกล่องรายการของคุณ ตัวอย่างเช่นคุณสามารถอนุญาตให้ผู้ใช้เลือกรายการแรกในรายการได้อย่างรวดเร็วโดยกดปุ่ม Home และรายการสุดท้ายโดยกดปุ่มสิ้นสุด
นี่คือวิธีที่คุณสามารถจัดการกับบ้านและคีย์สิ้นสุด:
listbox.addeVentListener ('keydown', ฟังก์ชั่น (เหตุการณ์) {ถ้า (event.key === 'home') {listbox.selectedIndex = 0;} อื่นถ้า (event.key === 'end') {listbox.selectedIndex = listbox.options.length - 1;}});
ในรหัสนี้เราเพิ่มไฟล์คีย์ดาวน์ผู้ฟังเหตุการณ์ไปยังกล่องรายการและตรวจสอบว่าคีย์ที่กดเป็นรหัสบ้านหรือสิ้นสุดหรือไม่ หากเป็นคีย์โฮมเราจะตั้งค่าดัชนีที่เลือกเป็น 0 ซึ่งเลือกรายการแรกในรายการ หากเป็นปุ่มสิ้นสุดเราจะตั้งค่าดัชนีที่เลือกเป็นรายการสุดท้ายในรายการ
การรวมเข้ากับส่วนประกอบอื่น ๆ
บางครั้งคุณอาจต้องการรวมกล่องรายการเข้ากับส่วนประกอบอื่น ๆ ในหน้าของคุณตามเหตุการณ์แป้นพิมพ์ ตัวอย่างเช่นคุณสามารถมีฟิลด์อินพุตข้อความที่ผู้ใช้สามารถพิมพ์คำค้นหาและเมื่อพวกเขากด ENTER ในขณะที่กล่องรายการมีโฟกัสคุณทำการค้นหาโดยใช้รายการที่เลือกในกล่องรายการและข้อความในฟิลด์อินพุต
นี่คือตัวอย่างของวิธีที่คุณสามารถบรรลุสิ่งนี้:
<อินพุต type = "text" id = "searchInput"> <เลือก id = "mylistbox"> <ตัวเลือกค่า = "ตัวเลือก 1"> ตัวเลือก 1 </ตัวเลือก> <ตัวเลือกค่า = "ตัวเลือก 2"> ตัวเลือก 2 </opovie>
const listbox = document.getElementById ('mylistbox'); const searchInput = document.getElementById ('searchInput'); listbox.addeVentListener ('keydown', ฟังก์ชั่น (เหตุการณ์) {ถ้า (event.key === 'Enter') {const selectedIndex = listbox.selectedIndex; const selectedValue = listbox.options [selectedIndex] SelectedValue, seelchterm);}});
ในรหัสนี้ก่อนอื่นเราจะได้รับการอ้างอิงไปยังกล่องรายการและฟิลด์อินพุตการค้นหา จากนั้นเราเพิ่มไฟล์คีย์ดาวน์ฟังเหตุการณ์ไปยังกล่องรายการ เมื่อผู้ใช้กดปุ่ม ENTER เราจะได้รับค่าที่เลือกจากกล่องรายการและข้อความจากฟิลด์อินพุตการค้นหาจากนั้นเราสามารถใช้ค่าเหล่านี้เพื่อทำการค้นหา
การใช้ห้องสมุดที่สาม - ปาร์ตี้
หากคุณไม่ต้องการเขียนรหัสการจัดการเหตุการณ์แป้นพิมพ์ทั้งหมดตั้งแต่เริ่มต้นมีห้องสมุดปาร์ตี้ที่สามที่สามารถช่วยคุณได้ ตัวอย่างเช่น jQuery มีฟังก์ชั่นที่มีประโยชน์มากมายสำหรับการจัดการกิจกรรมรวมถึงกิจกรรมแป้นพิมพ์
นี่คือวิธีที่คุณสามารถใช้ jQuery เพื่อจัดการปุ่มลูกศรและป้อนเหตุการณ์สำคัญ:
<! doctype html> <html> <head> <script src = "https://code.jquery.com/jQuery-3.6.0.min.js"> </script> </head> <body> <select id = "ตัวเลือกตัวเลือก </ตัวเลือก value = "ตัวเลือก 3"> ตัวเลือก 3 </potion> </select> <script> $ ('#mylistbox'). keydown (ฟังก์ชั่น (เหตุการณ์) {ถ้า (event.key === 'Arrowup') {constelectedIndex = $ (this) .prop ('selectedIndex'); (event.key === 'Arrowdown') {const selectedIndex = $ (this) .prop ('selectedIndex'); $ (นี้) .prop ('SelectedIndex'); </script> </body> </html>
ในรหัสนี้ก่อนอื่นเราจะรวมไลบรารี jQuery ในไฟล์ HTML ของเรา จากนั้นเราใช้ jQuery เพื่อเลือกกล่องรายการและเพิ่มไฟล์คีย์ดาวน์ฟังเหตุการณ์กับมัน ภายในผู้ฟังเหตุการณ์เราจัดการปุ่มลูกศรและป้อนเหตุการณ์สำคัญในลักษณะเดียวกันกับที่เราทำในตัวอย่างวานิลลาจาวาสคริปต์
บทสรุป
การจัดการกิจกรรมคีย์บอร์ดในกล่องรายการเป็นส่วนสำคัญในการมอบประสบการณ์การใช้งานที่ดี ด้วยการจัดการเหตุการณ์พื้นฐานเช่นปุ่มลูกศรและป้อนคีย์รวมถึงกิจกรรมขั้นสูงเช่นหน้าเว็บขึ้นหน้าลงบ้านและปุ่มสิ้นสุดคุณสามารถทำให้กล่องรายการของคุณเป็นมิตรมากขึ้น - เป็นมิตร นอกจากนี้คุณยังสามารถรวมกล่องรายการเข้ากับส่วนประกอบอื่น ๆ ในหน้าของคุณและใช้ไลบรารีปาร์ตี้ที่สามเพื่อทำให้กระบวนการพัฒนาง่ายขึ้น
หากคุณอยู่ในตลาดสำหรับกล่องรายการคุณภาพสูงเราอยู่ที่นี่เพื่อช่วย! เรานำเสนอผลิตภัณฑ์กล่องรายการที่หลากหลายซึ่งออกแบบมาเพื่อตอบสนองความต้องการเฉพาะของคุณ ไม่ว่าคุณจะต้องการกล่องรายการง่าย ๆ สำหรับโครงการขนาดเล็กหรือที่ซับซ้อนกว่านี้สำหรับแอปพลิเคชันขนาดใหญ่เรามีคุณครอบคลุม
หากคุณสนใจแคลมป์เซ็นเซอร์-เคสน้ำอัลตราโซนิก, หรือตัวท่อนอกจากนี้เรายังสามารถจัดหาผลิตภัณฑ์และโซลูชั่นที่เกี่ยวข้อง
หากคุณต้องการหารือเกี่ยวกับความต้องการของคุณหรือรับใบเสนอราคาอย่าลังเลที่จะติดต่อเรา เรารอคอยที่จะทำงานร่วมกับคุณและช่วยคุณค้นหากล่องรายการที่สมบูรณ์แบบสำหรับโครงการของคุณ
การอ้างอิง
- เอกสาร JavaScript บนเอกสารเว็บ MDN
- เอกสารอย่างเป็นทางการของ jQuery
