Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> HTML

HTML DOM Select multiple Property: เลือกหลายรายการ

คุณสมบัติ multipleของ <select> คืนค่าและกำหนดว่าผู้ใช้สามารถเลือกหลายตัวเลือกพร้อมกันได้หรือไม่ (โดยถือ Ctrl/Cmd + คลิก หรือ Shift + คลิก)

รูปแบบ (Syntax)

อ่านค่า:

object.multiple

กำหนดค่า:

object.multiple = true | false

ตัวอย่างการใช้งาน

เปิดใช้งานการเลือกหลายรายการ:

<!DOCTYPE html>
<html>
<head>
    <style>
        body { text-align: center; color: #fff; background: linear-gradient(62deg, #FBAB7E 0%, #F7CE68 100%) center/cover no-repeat; height: 100vh; }
        p { font-weight: 700; font-size: 1.2rem; }
        .drop-down { width: 50%; border: 2px solid #fff; font-weight: bold; padding: 8px; background-color: #ffffff24; }
        .btn { background: #0197F6; border: none; height: 2rem; border-radius: 2px; width: 45%; margin: 2rem auto; display: block; color: #fff; outline: none; cursor: pointer; }
        .show { font-size: 1.1rem; font-weight: bold; }
    </style>
</head>
<body>
    <h1>ตัวอย่าง Select multiple Property</h1>
    <p>สวัสดี เลือกวิชาที่ชอบ:</p>
    <select class='drop-down'>
        <option>Physics</option>
        <option>Maths</option>
        <option>Chemistry</option>
        <option>English</option>
    </select>
    <button onclick="enableMultiple()" class="btn">เปิดใช้งานเลือกหลายรายการ</button>
    <div class="show"></div>
    <script>
        function enableMultiple() {
            var dropDown = document.querySelector(".drop-down");
            var showMsg = document.querySelector(".show");
            dropDown.multiple = true;
            showMsg.innerHTML = "ตอนนี้เลือกหลายรายการได้แล้ว (ถือ Ctrl/Shift + คลิก)";
        }
    </script>
</body>
</html>

การเข้าถึงค่าที่เลือกหลายรายการ

var select = document.querySelector("select");
var selectedValues = Array.from(select.selectedOptions).map(function(opt) {
    return opt.value;
});
console.log(selectedValues); // ["Physics", "Maths"]

การส่งข้อมูลไปเซิร์ฟเวอร์

  • PHP: $_POST['subject'] จะเป็น array
  • Node.js: req.body.subject จะเป็น array
  • HTML: ต้องตั้ง name เป็น name="subject[]" สำหรับ PHP (บาง framework จัดการอัตโนมัติ)

คำแนะนำ UX

  • ควรแจ้งผู้ใช้ว่าสามารถเลือกหลายรายการได้ (เพิ่มข้อความ hint)
  • พิจารณาใช้ checkbox group แทน หากตัวเลือกน้อยกว่า 7-8 รายการ
  • select multiple ยากต่อการใช้งานบน mobile