บทนำ
เคยรู้สึกว่ากำลังพิมพ์ในกล่องข้อความและต้องการกดปุ่ม Tab
เพื่อนำเข้าช่องว่างแทนที่จะกระโดดไปยังฟิลด์นำเข้าถัดไปไหม? ฟังก์ชันนี้มักจะต้องการในสถานการณ์เช่นการเขียนโค้ดหรือการจัดรูปแบบข้อความที่การจัดตำแหน่งมีความสำคัญอย่างยิ่ง น่าเสียดายที่พฤติกรรมเริ่มต้นของปุ่ม Tab
คือการนำทางระหว่างองค์ประกอบที่มีการโต้ตอบบนหน้าเว็บ ซึ่งทำให้ยากที่จะบรรลุผลนี้โดยไม่ต้องเขียนโค้ดในแบบที่กำหนดเอง
ในบล็อกโพสต์นี้ เราจะสำรวจวิธีการจับคู่ปุ่ม Tab
ในกล่องข้อความโดยใช้ JavaScript และดำเนินการแก้ไขปัญหาที่ช่วยให้คุณสามารถใส่ช่องว่างได้อย่างราบรื่น นอกจากนี้เรายังจะพูดคุยเกี่ยวกับทางเลือกของการรวมปุ่มที่สามารถบรรลุผลที่คล้ายคลึงกัน
ทำความเข้าใจกับปัญหา
ความท้าทายอยู่ที่วิธีที่เบราว์เซอร์จัดการกับปุ่ม Tab
โดยทั่วไป:
- พฤติกรรมเริ่มต้น: การกด
Tab
จะย้ายโฟกัสไปที่องค์ประกอบที่สามารถโฟกัสถัดไป (เช่น กล่องนำเข้าอื่น) - ความเข้ากันได้ของเบราว์เซอร์: เบราว์เซอร์ที่แตกต่างกันอาจมีระดับการสนับสนุนที่ต่างกันในการป้องกันการดำเนินการเริ่มต้นนี้
แนวทางแก้ปัญหาที่เป็นไปได้
- จับเหตุการณ์คีย์: เราจะจับเหตุการณ์
keydown
เพื่อป้องกันการดำเนินการเริ่มต้นจากการเกิดขึ้น - การรวมปุ่มทางเลือก: พิจารณาการใช้การรวมกันเช่น
Shift + Tab
หรือCtrl + Q
การดำเนินการแก้ไขปัญหา
เพื่อให้ผู้ใช้สามารถใส่ช่องว่างได้โดยการกดปุ่ม Tab
ให้ทำตามขั้นตอนด้านล่าง:
ขั้นตอนที่ 1: โครงสร้าง HTML
สร้างโครงสร้าง HTML ง่ายๆ ด้วยกล่องข้อความที่คุณต้องการใช้งานฟังก์ชันนี้:
<body>
<input type="text" id="myInput">
ขั้นตอนที่ 2: การเพิ่ม JavaScript
ถัดไป เราจะดำเนินการการ JavaScript ที่จำเป็นในการจับคู่ปุ่ม Tab
และใส่ช่องว่าง
<script type="text/javascript">
var myInput = document.getElementById("myInput");
// เพิ่มผู้ฟังเหตุการณ์สำหรับเหตุการณ์ keydown
if(myInput.addEventListener) {
myInput.addEventListener('keydown', keyHandler, false);
} else if(myInput.attachEvent) {
myInput.attachEvent('onkeydown', keyHandler); // สำหรับ IE
}
// จัดการเหตุการณ์คีย์
function keyHandler(e) {
var TABKEY = 9; // รหัสคีย์สำหรับปุ่ม Tab
if(e.keyCode == TABKEY) {
// ใส่ช่องว่างสี่ช่อง
this.value += " "; // ปรับจำนวนช่องว่างตามต้องการ
// ป้องกันการดำเนินการเริ่มต้นจากการเกิดขึ้น
if(e.preventDefault) {
e.preventDefault();
}
return false;
}
}
</script>
</body>
การวิเคราะห์โค้ด JavaScript
- ผู้ฟังเหตุการณ์: เราจะตรวจสอบการมีอยู่ของ
addEventListener
และถ้าไม่พบ จะใช้attachEvent
แทน (โดยใช้วิธีแก้ไขเก่าสำหรับ Internet Explorer) - ตัวจัดการคีย์: ภายในฟังก์ชัน
keyHandler
:- เราจะกำหนดรหัสคีย์สำหรับปุ่ม
Tab
(9) - ถ้ากดปุ่ม
Tab
จะเพิ่มช่องว่างสี่ช่อง (คุณสามารถปรับเปลี่ยนได้ตามที่ต้องการ) - เราจะเรียกใช้วิธี
preventDefault
เพื่อหยุดปุ่มTab
จากการย้ายเคอร์เซอร์ไปยังฟิลด์นำเข้าถัดไป
- เราจะกำหนดรหัสคีย์สำหรับปุ่ม
ขั้นตอนที่ 3: ทดสอบในเบราว์เซอร์ต่างๆ
สิ่งสำคัญคือการทดสอบฟังก์ชันใหม่ในหลายเบราว์เซอร์ รวมถึง Chrome, Firefox และ Internet Explorer เนื่องจากอาจมีความแตกต่างในพฤติกรรม ตัวอย่างเช่น แม้ว่า Firefox จะสนับสนุนวิธี preventDefault
แต่เบราว์เซอร์เก่าอย่าง IE อาจต้องการให้คืนค่าผลลัพธ์เป็น false
จากตัวจัดการ
การรวมปุ่มทางเลือก
หากต้องการให้แน่ใจว่าผู้ใช้ยังสามารถเปลี่ยนโฟกัสโดยใช้ปุ่ม Tab
ขณะใส่ช่องว่าง ให้พิจารณาการดำเนินการรวมปุ่มทางเลือก:
- Shift + Tab: มักใช้เพื่อย้ายโฟกัสกลับ สามารถใช้ที่นี่เพื่ออนุญาตให้มีฟังก์ชันตามเงื่อนไข
- Ctrl + Q: ตัวเลือกที่สามารถปรับแต่งได้ซึ่งสามารถกำหนดไว้ภายในฟังก์ชัน
keyHandler
สรุป
การจับคู่ปุ่ม Tab
ในกล่องข้อความสามารถเพิ่มการโต้ตอบของผู้ใช้ โดยเฉพาะในแอปพลิเคชันที่มุ่งเน้นการจัดรูปแบบข้อความ โดยการปฏิบัติตามขั้นตอนที่ระบุไว้ในโพสต์นี้ คุณสามารถรวมฟังก์ชันนี้เข้ากับโครงการของคุณได้อย่างง่ายดาย
ลองดำเนินการแก้ไขปัญหานี้ในส่วนประกอบเว็บถัดไปและดูว่ามันปรับปรุงการใช้งานสำหรับผู้ใช้ที่ต้องการใส่ช่องว่างในฟิลด์นำเข้าได้อย่างไร!