วิธีแก้ select2 ส่งค่า tag multiple ได้ไม่ครบ


ใส่ไว้เตือนความจำหน่อยกับการใช้ select2 jquery plugin

สมมุติ select option เราหน้าตาเป็นแบบนี้

<select class="form-control" id="em_medical" name="em_medical" multiple="multiple">
    <option value="เบาหวาน">เบาหวาน</option>
    <option value="ความดันโลหิตสูง">ความดันโลหิตสูง</option>
    <option value="หัวใจ">หัวใจ</option>
    <option value="หอบหืด">หอบหืด</option>
    <option value="ถุงลมโป่งพอง">ถุงลมโป่งพอง</option>
    <option value="โรคมะเร็ง">โรคมะเร็ง</option>
</select>

จากนั้นเราใช้เจ้า select2 เข้ามาจับเพื่อให้ได้ผลลัพท์หน้าตาแบบนี้




แต่เจ้ากรรม เมื่อเรา post ไป กลับกลายเป็นว่ามันได้รับแค่เพียงคำว่า "ถุงลมโป่งพอง" แต่ที่จะเป็นค่าทั้งหมดที่เราได้ select เอาไว้

นั่นเป็นเพราะเราหลงลืมบางสิ่งไป!

การที่เราจะส่งค่าหลายๆค่าไปนั้น มันไม่ใช่การส่งข้อความต่อๆกันยาวๆ แต่มันจะส่งไปในรูปแบบของ Array

ภาพด้านบนสุดจะมีการ ตรวจสอบด้วย print_r() เพื่อดูว่าค่าที่ส่งไปถูกต้องครบถ้วนหรือไม่! 

วิธีแก้คือ ให้เราใส่ [] เข้าไปใน name property ของ select ดังตัวอย่าง

<select class="form-control" id="em_medical" name="em_medical[]" multiple="multiple">

แค่นี้ผลลัพท์ก็ได้ออกมาครบถ้วนตามต้องการแล้ว

แนะนำ - https://select2.github.io/

ป้ายกำกับ: , ,