0Pricing
React Academy · บทเรียน

การนำทางด้วยแป้นพิมพ์ในรายการคำแนะนำ

จัดการปุ่ม ArrowUp, ArrowDown, Enter และ Escape เพื่อเลื่อนดูและเลือกคำแนะนำโดยไม่ใช้เมาส์

การนำทางด้วยแป้นพิมพ์ในรายการคำแนะนำ เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

การจัดการ onKeyDown บนช่องป้อน

ผูกตัวจัดการแป้นพิมพ์กับเหตุการณ์ onKeyDown ขององค์ประกอบช่องป้อน ไม่ใช่ onKeyPress (เลิกใช้งานแล้ว) หรือ onKeyUp keyDown ทำงานก่อนที่อักขระจะปรากฏในช่องป้อน จึงเปิดโอกาสให้คุณดักจับ ArrowDown, ArrowUp, Enter และ Escape ก่อนที่ปุ่มเหล่านี้จะมีผลตามค่าเริ่มต้นของเบราว์เซอร์

พฤติกรรมของปุ่ม ArrowDown

เมื่อผู้ใช้กด ArrowDown ให้เพิ่มค่า selectedIndex ขึ้น 1 โดยจำกัดค่าสูงสุดไว้ที่ suggestions.length - 1: setSelectedIndex(prev => Math.min(prev + 1, suggestions.length - 1)) และเรียก e.preventDefault() เพื่อป้องกันไม่ให้เคอร์เซอร์เลื่อนไปท้ายข้อความในช่องป้อน ซึ่งเป็นพฤติกรรมเริ่มต้นของเบราว์เซอร์สำหรับ ArrowDown ในช่องป้อนข้อความ

พฤติกรรมของปุ่ม ArrowUp

เมื่อผู้ใช้กด ArrowUp ให้ลดค่า selectedIndex ลง 1 โดยจำกัดค่าต่ำสุดไว้ที่ 0: setSelectedIndex(prev => Math.max(prev - 1, 0)) คุณอาจเลือกจำกัดค่าไว้ที่ -1 (ไม่มีการเลือก) เมื่อเลื่อนขึ้นเหนือดัชนี 0 เพื่อให้ผู้ใช้ “ยกเลิกการเลือก” และกลับไปพิมพ์ได้อย่างอิสระ

พฤติกรรมของปุ่ม Enter

เมื่อกด Enter และ selectedIndex >= 0 ให้เลือกคำแนะนำที่ถูกเน้น โดยกำหนด inputValue เป็น suggestions[selectedIndex] ปิดรายการแบบเลื่อนลง และรีเซ็ต selectedIndex เป็น -1 หากไม่มีคำแนะนำถูกเน้น (selectedIndex เป็น -1) ให้การส่งแบบฟอร์มหรือการค้นหาตามปกติดำเนินต่อไป

พฤติกรรมของปุ่ม Escape

เมื่อกด Escape ให้ปิดรายการแบบเลื่อนลงโดยกำหนด isOpen เป็น false และรีเซ็ต selectedIndex เป็น -1 อย่าล้างค่าช่องป้อน เพราะผู้ใช้เพียงต้องการปิดคำแนะนำโดยไม่เลือกคำแนะนำใด และต้องการเก็บข้อความที่พิมพ์ไว้เพื่อแก้ไขต่อ

พฤติกรรมของปุ่ม Tab

เมื่อกด Tab ให้ปิดรายการแบบเลื่อนลง เพราะเบราว์เซอร์จะย้ายโฟกัสไปยังองค์ประกอบถัดไปที่รับโฟกัสได้อยู่แล้ว การกำหนด isOpen เป็น false เมื่อกด Tab ช่วยให้รายการแบบเลื่อนลงไม่ค้างอยู่หลังจากโฟกัสออกจากช่องป้อน คุณไม่จำเป็นต้องเรียก preventDefault() ปล่อยให้เบราว์เซอร์จัดการลำดับแท็บตามธรรมชาติ

การเน้นแถวที่เลือกด้วยภาพ

คำแนะนำที่ถูกเน้นต้องแตกต่างจากรายการอื่นอย่างเห็นได้ชัด ให้ใช้รูปแบบที่ใช้งานอยู่กับคำแนะนำที่ตำแหน่ง selectedIndex: className={index === selectedIndex ? 'suggestion suggestion--active' : 'suggestion'} สถานะที่ใช้งานอยู่มักใช้การเปลี่ยนสีพื้นหลัง เพื่อให้เห็นได้ชัดว่ารายการใดจะถูกเลือกเมื่อกด Enter

การเลื่อนรายการที่เลือกให้เข้ามาในมุมมอง

เมื่อรายการคำแนะนำมีความสูงสูงสุดและสามารถเลื่อนได้ รายการที่ถูกเน้นอาจเลื่อนออกนอกหน้าจอระหว่างการนำทางด้วยแป้นพิมพ์ ให้ใช้อาร์เรย์รีฟเพื่อเก็บองค์ประกอบ DOM ของคำแนะนำ และเรียก listItemRefs.current[selectedIndex]?.scrollIntoView({ block: 'nearest' }) ทุกครั้งที่ selectedIndex เปลี่ยน ค่า nearest ของบล็อกจะช่วยลดระยะทางที่ต้องเลื่อน

การซิงค์ selectedIndex เมื่อคำแนะนำเปลี่ยน

เมื่อช่องป้อนเปลี่ยนและมีรายการใหม่ที่ผ่านการกรองปรากฏขึ้น ให้รีเซ็ต selectedIndex เป็น -1 ในการอัปเดตสถานะเดียวกัน หรือใน useEffect ที่ขึ้นอยู่กับรายการคำแนะนำ ดัชนีเก่าที่ชี้ไปยังรายการซึ่งถูกลบออกอาจทำให้ผู้ใช้เลือกคำแนะนำผิดรายการ

ลำดับการนำทางด้วยแป้นพิมพ์แบบสมบูรณ์

ลำดับการใช้งานทั้งหมดมีดังนี้ ผู้ใช้พิมพ์เพื่อกรอง, ArrowDown เน้นรายการแรก, กด ArrowDown เพิ่มเพื่อเลื่อนผ่านรายการ, ArrowUp เลื่อนกลับขึ้นไป, Enter เลือกรายการที่ถูกเน้น และ Escape ปิดโดยไม่เลือก ลำดับนี้ครอบคลุมรูปแบบการโต้ตอบด้วยแป้นพิมพ์มาตรฐานทั้งหมดที่ผู้ใช้คาดหวังจากช่องเติมข้อความอัตโนมัติ

การป้องกันการทำงานเริ่มต้นของปุ่มลูกศร

ให้เรียก e.preventDefault() เสมอเมื่อจัดการ ArrowDown และ ArrowUp ภายในช่องป้อนข้อความ หากไม่ทำเช่นนั้น ArrowDown จะเลื่อนเคอร์เซอร์ข้อความไปท้ายข้อความ และ ArrowUp จะเลื่อนไปต้นข้อความ การเลื่อนเคอร์เซอร์เหล่านี้จะขัดแย้งกับการนำทางด้วยดัชนีการเลือก และทำให้เกิดพฤติกรรมที่สับสน

การจับคู่ปุ่มกับการทำงานในการนำทางด้วยแป้นพิมพ์

เมื่อผู้ใช้กด Enter โดยมีคำแนะนำถูกเน้นที่ selectedIndex = 2 ควรเกิดอะไรขึ้น

สรุปบทเรียน: การนำทางด้วยแป้นพิมพ์

จัดการ onKeyDown บนช่องป้อนข้อมูล เมื่อกด ArrowDown ให้เพิ่มค่า selectedIndex โดยจำกัดไว้ไม่ให้เกินค่าสูงสุด เมื่อกด ArrowUp ให้ลดค่าโดยจำกัดไว้ที่ 0 หรือ -1 ปุ่ม Enter ใช้เลือกรายการที่ไฮไลต์ ปุ่ม Escape ปิดโดยไม่เลือกรายการ และปุ่ม Tab ปิดแล้วปล่อยให้เบราว์เซอร์ย้ายโฟกัส โปรดเรียก preventDefault กับปุ่มลูกศรทุกครั้ง และเลื่อนรายการที่ไฮไลต์ให้เข้ามาอยู่ในมุมมองเสมอ

คำถามที่พบบ่อย

บทเรียน “การนำทางด้วยแป้นพิมพ์ในรายการคำแนะนำ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การนำทางด้วยแป้นพิมพ์ในรายการคำแนะนำ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การนำทางด้วยแป้นพิมพ์ในรายการคำแนะนำ”

จัดการปุ่ม ArrowUp, ArrowDown, Enter และ Escape เพื่อเลื่อนดูและเลือกคำแนะนำโดยไม่ใช้เมาส์ คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การนำทางด้วยแป้นพิมพ์ในรายการคำแนะนำ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม

ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. อินพุตที่ควบคุมด้วยรายการคำแนะนำ
  2. การนำทางด้วยแป้นพิมพ์ในรายการคำแนะนำ
  3. คำแนะนำแบบอะซิงโครนัสพร้อมดีบาวซ์
  4. การช่วยการเข้าถึงสำหรับวิดเจ็ตเติมข้อความอัตโนมัติ
← กลับไปที่ React Academy