วิธีสร้างดาต้าลิสต์ที่สามารถค้นหาได้ทันที
รายการแบบเลื่อนลงเป็นวิธีที่เรียบร้อยสำหรับ ตัวเลือกให้ สำหรับฟิลด์อินพุตโดยเฉพาะเมื่อรายการของตัวเลือกที่มีอยู่มีความยาว ผู้ใช้สามารถเลือกตัวเลือกที่พวกเขาต้องการ พิมพ์ลงในช่อง, หรือ มองผ่านตัวเลือกต่างๆ นั่นอาจเป็นการจับคู่สิ่งที่พวกเขากำลังมองหา. ความสามารถในการค้นหาผ่านตัวเลือกต่างๆ, อย่างไรก็ตามเป็นทางออกที่ดี.
พฤติกรรมนี้สามารถทำได้ด้วยการ องค์ประกอบ HTML ที่ แสดงคำแนะนำสำหรับการป้อนข้อมูล สำหรับการควบคุมที่แตกต่างกันเช่น
แท็ก อย่างไรก็ตาม
แสดงตัวเลือกที่มีให้เฉพาะเมื่อผู้ใช้มี พิมพ์อะไรบางอย่างแล้ว ลงในช่องป้อนข้อมูล.
เราสามารถทำให้ฟิลด์อินพุตใช้งานได้มากขึ้นถ้าเราเปิดใช้งานผู้ใช้ เข้าถึงรายการตัวเลือกทั้งหมด ตลอดเวลาระหว่างกระบวนการรับอินพุต.
ในโพสต์นี้เราจะมาดูวิธีการสร้าง รายการแบบหล่นลงที่สามารถค้นหาได้ตลอดเวลา ใช้ และ
องค์ประกอบ HTML และ JavaScript เล็กน้อย.
1. สร้างดาต้าลิสต์ด้วยตัวเลือก
ก่อนอื่นเราจะสร้างดาต้าลิสต์สำหรับเครื่องมือแก้ไขข้อความที่แตกต่างกัน ตรวจสอบให้แน่ใจว่ามูลค่าของ รายการ
คุณลักษณะของ แท็ก เป็นเช่นเดียวกับ
รหัส
ของ แท็ก - นี่คือวิธีที่เราเชื่อมโยงเข้าด้วยกัน.
2. กำหนดให้ Datalist มองเห็นได้
โดยค่าเริ่มต้น องค์ประกอบ HTML คือ ซ่อนเร้น. เราเห็นได้ก็ต่อเมื่อเรา เริ่มพิมพ์อินพุต ลงในฟิลด์ที่ datalist เชื่อมต่ออยู่.
อย่างไรก็ตามมีวิธี "บังคับ" เนื้อหาของนักข้อมูล (เช่นตัวเลือกทั้งหมด) เพื่อให้ปรากฏบนหน้าเว็บ. เราจะต้องให้มันที่เหมาะสมเท่านั้น แสดง
มูลค่าทรัพย์สิน นอกเหนือจากนี้ ไม่มี
, เช่น จอแสดงผล: บล็อก;
.
datalist display: block;
ตัวเลือกที่ปรากฏ ยังไม่สามารถเลือกได้ ณ จุดนี้เบราว์เซอร์เท่านั้น วาทกรรมตัวเลือก พบภายในดาต้าลิสต์.
ดังกล่าวข้างต้นเนื่องจากพฤติกรรมในตัวของ ธาตุ, ส่วนหนึ่งของตัวเลือกปรากฏขึ้นและสามารถเลือกได้, แต่เมื่อผู้ใช้เริ่มพิมพ์สตริงที่เบราว์เซอร์สามารถทำได้ ค้นหาตัวเลือกการจับคู่.
เรายังต้องหากลไกในการทำ ทั้งหมด ตัวเลือก (บนภาพหน้าจอด้านบนแสดงภายใต้รายการข้อมูลแบบเลื่อนลง) เลือก ที่ จุดอื่น ๆ ของกระบวนการรับอินพุต - เมื่อผู้ใช้ต้องการที่จะตรวจสอบตัวเลือกก่อนที่พวกเขาจะพิมพ์อะไรหรือในขณะที่พวกเขาได้นำบางสิ่งบางอย่างลงในช่องใส่.
3. นำเข้ามา
องค์ประกอบ HTML
มีสองวิธีในการเปิดใช้งานผู้ใช้ ดูและเลือกตัวเลือกทั้งหมด เมื่อใดก็ตามที่พวกเขาต้องการ:
- เราสามารถเพิ่ม คลิกตัวจัดการเหตุการณ์ ทุกตัวเลือกและใช้เพื่อเลือกตัวเลือกเมื่อมีการคลิกหรือเราสามารถ แปลง ตัวเลือก ลงในรายการแบบหล่นลงที่แท้จริง, ซึ่งโดยค่าเริ่มต้นสามารถเลือกได้.
- เราทำได้ ห่อตัวเลือก ของดาต้าลิสต์ กับ
องค์ประกอบ HTML.
เราจะเลือกวิธีที่สองเนื่องจากง่ายกว่าและได้รับอนุญาตให้ใช้ เป็นกลไกทางเลือก ในเบราว์เซอร์ที่ไม่รองรับ ธาตุ. เมื่อเบราว์เซอร์ไม่สามารถแสดงผล & แสดงรายการข้อมูลได้ วาทกรรม
องค์ประกอบที่มีตัวเลือกทั้งหมด แทน.
โดยค่าเริ่มต้น เลือก
องค์ประกอบจะไม่ปรากฏในเบราว์เซอร์ที่รองรับนักดาต้านั่นคือจนกว่าเราจะ บังคับให้ดาต้าลิสต์แสดงเนื้อหา กับ จอแสดงผล: บล็อก;
กฎ CSS.
ดังนั้นเมื่อเรา ห่อตัวเลือก จากตัวอย่างด้านบน (โดยที่ datalist มี จอแสดงผล: บล็อก
) กับ แท็ก HTML โค้ดมีลักษณะดังนี้:
ไปยัง ดูตัวเลือกทั้งหมด ของ เลือก
ในรายการแบบเลื่อนลงเราจำเป็นต้องใช้แอตทริบิวต์ หลายอย่าง
เพื่อแสดงมากกว่าหนึ่งตัวเลือกและ ขนาด
สำหรับจำนวนตัวเลือกที่เราต้องการแสดง.
4. เพิ่มปุ่มสลับ
รายการแบบหล่นลงเต็มควรจะปรากฏขึ้น เท่านั้น เมื่อผู้ใช้ คลิกที่ปุ่มสลับ ถัดจากฟิลด์อินพุตในขณะที่ผู้ใช้พิมพ์แคตาล็อกลิสต์ที่ทำงานจะปรากฏขึ้น เถอะ เปลี่ยน แสดง
ค่าของ datalist ไปยัง ไม่มี
, และนอกจากนี้ยังมี เพิ่มปุ่ม ถัดจากฟิลด์อินพุตซึ่งจะสลับ แสดง
ค่าของดาต้าลิสต์และจากนั้นจะก่อให้เกิดการปรากฏตัวของ เลือก
.
ดาต้าลิสต์ display: none;
นอกจากนี้เรายังต้องเพิ่มปุ่มต่อไปนี้ด้านบนดาต้าลิสต์ในไฟล์ HTML:
ตอนนี้เรามาดูจาวาสคริปต์ อันดับแรกเราจะกำหนด ตัวแปรเริ่มต้น.
button = document.querySelector ('ปุ่ม'); datalist = document.querySelector ('ดาต้าลิสต์'); select = document.querySelector ('เลือก'); ตัวเลือก = select.options;
ต่อไปเราต้อง เพิ่มฟังเหตุการณ์ (toggle_ddl
) ไปยังเหตุการณ์คลิกของปุ่มซึ่งจะ สลับลักษณะที่ปรากฏของ datalist.
button.addEventListener ('คลิก', toggle_ddl);
จากนั้นเราจะกำหนด toggle_ddl ()
ฟังก์ชัน ในการทำเช่นนั้นเราจำเป็นต้อง ตรวจสอบค่าของ datalist.style.display
คุณสมบัติ. ถ้ามันเป็นสตริงว่าง Data datist จะถูกซ่อนดังนั้นเราต้อง ตั้งค่าเป็น กลุ่ม
, และเพื่อ เปลี่ยนปุ่ม จากลูกศรชี้ลงสู่ลูกศรชี้ขึ้น.
ฟังก์ชัน toggle_ddl () / * ถ้า DDL ถูกซ่อน * / if (datalist.style.display === ") / * แสดง DDL * / datalist.style.display = 'block'; this.textContent =" âÂ-² "; else hide_select (); function hide_select () / * hide DDL * / datalist.style.display ="; button.textContent = "âA-ย¼";
hide_select ()
ฟังก์ชัน ซ่อนดาต้าลิสต์ โดยการตั้งค่า datalist.style.display
กลับไปเป็นสตริงว่างเปล่าและเปลี่ยนปุ่มลูกศรกลับไปที่จุดลง.
ในการตั้งค่าขั้นสุดท้ายหากช่องป้อนข้อมูลมีตัวเลือกที่เลือกไว้ก่อนหน้านี้และรายการแบบหล่นลงยังถูกเรียกใช้โดยการคลิกปุ่มในภายหลังตัวเลือกที่เลือกแบบทั่วไปยัง จะต้องมีการแสดงตามที่เลือก ในรายการแบบหล่นลง.
ดังนั้นให้เพิ่มรหัสที่ไฮไลต์ต่อไปนี้ลงใน toggle_ddl ()
ฟังก์ชั่น:
ฟังก์ชัน toggle_ddl () / * ถ้า DDL ถูกซ่อน * / if (datalist.style.display === ") / * แสดง DDL * / datalist.style.display = 'block'; this.textContent =" âÂ-² "; var val = input.value สำหรับ (var i = 0; iนอกจากนี้เรายังต้องการซ่อนรายการแบบหล่นลงเมื่อผู้ใช้พิมพ์ลงในช่องป้อนข้อมูล (ในเวลาที่ดาต้าลิสต์ทำงานจะปรากฏขึ้น).
/ * เมื่อผู้ใช้ต้องการพิมพ์ลงในช่องข้อความให้ซ่อน DDL * / input = document.querySelector ('input'); input.addEventListener ('โฟกัส', hide_select);5. อัปเดตอินพุตเมื่อเลือกตัวเลือก
สุดท้ายเรามา เพิ่ม
เปลี่ยนแปลง
จัดการเหตุการณ์ ไปที่แท็กดังนั้นเมื่อผู้ใช้เลือกตัวเลือกจากรายการแบบเลื่อนลงค่าของมันจะปรากฏภายใน
สนามเช่นกัน.
/ * เมื่อผู้ใช้เลือกตัวเลือกจาก DDL เขียนมันลงในฟิลด์ข้อความ * / select.addEventListener ('เปลี่ยน', fill_input); ฟังก์ชัน fill_input () input.value = options [this.selectedIndex] .value; hide_select ();ข้อเสีย
ข้อเสียเปรียบหลักของเทคนิคนี้คือ ขาดวิธีการตรงไปตรงมาสไตล์
ธาตุ ด้วย CSS (รูปลักษณ์ของ
และ
แท็กจะแตกต่างกันในเบราว์เซอร์ที่แตกต่างกัน).
นอกจากนี้ใน Firefox ข้อความป้อนเข้าจะถูกจับคู่กับตัวเลือกที่ มี อักขระอินพุตขณะที่เบราว์เซอร์อื่น ๆ จับคู่ตัวเลือกที่ เริ่มด้วย ตัวละครเหล่านั้น ข้อมูลจำเพาะ W3C สำหรับดาต้าลิสต์ไม่ได้ระบุวิธีการจับคู่ที่ชัดเจน.
นอกเหนือจากนั้นวิธีนี้ดีและ ทำงานในเบราว์เซอร์หลัก ๆ ทั้งหมด, ในขณะที่เบราว์เซอร์ที่ใช้งานไม่ได้ผู้ใช้ยังสามารถเห็นรายการแบบหล่นลงได้ แต่คำแนะนำจะไม่ปรากฏขึ้น.
ตรวจสอบการสาธิตขั้นสุดท้ายด้วยสไตล์ CSS เล็กน้อยด้านล่าง: