<optgroup> เป็นแท็กใน HTML5 ที่ใช้เพื่อจัดกลุ่มตัวเลือกภายใน <select> ให้เป็นกลุ่มๆ เพื่อให้การเลือกตัวเลือกเป็นระเบียบและเข้าใจง่ายขึ้น โดยทั่วไปแล้วจะใช้ในกรณีที่ต้องการจัดกลุ่มข้อมูลที่มีความสัมพันธ์กัน เช่น เมนูเลือกประเทศ เมนูเลือกหมวดหมู่ เป็นต้น
การใช้งาน <optgroup> เบื้องต้น
แท็ก <optgroup> จะต้องอยู่ภายใน <select> และแต่ละ <optgroup> จะประกอบด้วย <option> ที่เป็นตัวเลือกจริงๆ ของเรา โดยมีแอตทริบิวต์ label เพื่อระบุชื่อกลุ่ม
<label for="fruits">เลือกผลไม้ที่ชอบ:</label>
<select id="fruits" name="fruits">
<optgroup label="ผลไม้เขตร้อน">
<option value="mango">มะม่วง</option>
<option value="pineapple">สับปะรด</option>
</optgroup>
<optgroup label="ผลไม้เขตหนาว">
<option value="apple">แอปเปิล</option>
<option value="cherry">เชอร์รี่</option>
</optgroup>
</select>ในตัวอย่างข้างต้น ตัวเลือกของเราจะแบ่งออกเป็น 2 กลุ่ม: “ผลไม้เขตร้อน” และ “ผลไม้เขตหนาว” โดยที่ผู้ใช้งานสามารถเลือกจากผลไม้ในแต่ละกลุ่มได้
การใช้งานแอตทริบิวต์ disabled
เราสามารถใช้แอตทริบิวต์ disabled กับ <optgroup> เพื่อปิดใช้งานทั้งกลุ่มตัวเลือกได้ หากไม่ต้องการให้ผู้ใช้เลือกจากกลุ่มนั้น
<label for="cars">เลือกยี่ห้อรถยนต์:</label>
<select id="cars" name="cars">
<optgroup label="ญี่ปุ่น">
<option value="toyota">Toyota</option>
<option value="honda">Honda</option>
</optgroup>
<optgroup label="ยุโรป" disabled>
<option value="bmw">BMW</option>
<option value="mercedes">Mercedes-Benz</option>
</optgroup>
</select>ในตัวอย่างนี้ กลุ่ม “ยุโรป” ถูกปิดการใช้งาน (disabled) ทำให้ผู้ใช้งานไม่สามารถเลือกยี่ห้อรถ BMW หรือ Mercedes-Benz ได้
การใช้ JavaScript ควบคุม <optgroup>
เราสามารถใช้ JavaScript เพื่อควบคุมการแสดงผลหรือการทำงานของ <optgroup> ได้ เช่น การเพิ่มหรือลบตัวเลือก หรือการเปิดปิดการใช้งานแบบไดนามิก
ตัวอย่างการเปิด/ปิดการใช้งาน <optgroup> ด้วย JavaScript
<label for="cities">เลือกเมือง:</label>
<select id="cities" name="cities">
<optgroup label="ในประเทศ" id="local">
<option value="bangkok">กรุงเทพฯ</option>
<option value="chiangmai">เชียงใหม่</option>
</optgroup>
<optgroup label="ต่างประเทศ" id="foreign">
<option value="newyork">นิวยอร์ก</option>
<option value="paris">ปารีส</option>
</optgroup>
</select>
<button onclick="toggleForeign()">เปิด/ปิดตัวเลือกต่างประเทศ</button>
<script>
function toggleForeign() {
const foreignOptgroup = document.getElementById('foreign');
foreignOptgroup.disabled = !foreignOptgroup.disabled;
}
</script>ในตัวอย่างนี้ เมื่อผู้ใช้กดปุ่ม ตัวเลือกในกลุ่ม “ต่างประเทศ” จะถูกเปิดหรือปิดการใช้งานตามการกดปุ่ม
การจัดกลุ่มซ้อนกัน
แม้ว่ามาตรฐาน HTML5 ไม่ได้รองรับการซ้อนกลุ่ม (<optgroup> ภายใน <optgroup>) แต่บางเบราว์เซอร์อาจจะรองรับในระดับหนึ่ง อย่างไรก็ตาม ควรหลีกเลี่ยงการใช้โครงสร้างซ้อนซับมากเกินไปในกรณีนี้ เพื่อให้แน่ใจว่าการใช้งานเป็นไปตามมาตรฐานและสามารถทำงานได้บนทุกเบราว์เซอร์
สรุป
การใช้งาน <optgroup> มีประโยชน์ในการจัดการตัวเลือกในแบบฟอร์มให้เป็นระเบียบ ทำให้ผู้ใช้งานสามารถเลือกข้อมูลได้ง่ายและสะดวกมากขึ้น
