สำหรับ select2 version> = 4.0.0
โซลูชันอื่นอาจไม่ทำงานอย่างไรก็ตามตัวอย่างต่อไปนี้ควรใช้งานได้
โซลูชันที่ 1: ทำให้เหตุการณ์การเปลี่ยนแปลงที่แนบทั้งหมดเพื่อทริกเกอร์รวมทั้ง select2
$('select').val('1').trigger('change');
โซลูชันที่ 2: ทำให้ JUST select2 เปลี่ยนเหตุการณ์เพื่อทริกเกอร์
$('select').val('1').trigger('change.select2');
ดูjsfiddleนี้สำหรับตัวอย่างของสิ่งเหล่านี้ ขอบคุณ @minlare สำหรับโซลูชัน 2
คำอธิบาย:
ว่าฉันมีเพื่อนที่ดีที่สุดที่มีชื่อของผู้คนเลือก ดังนั้นบ็อบบิลและจอห์น (ในตัวอย่างนี้ฉันถือว่าค่าเหมือนกันกับชื่อ) ครั้งแรกที่ฉันเริ่มต้น select2 ที่เลือกของฉัน:
$('#my-best-friend').select2();
ตอนนี้ฉันเลือก Bob ในเบราว์เซอร์ด้วยตนเอง ถัดไปบ๊อบทำอะไรที่ซุกซนและฉันไม่ชอบเขาอีกต่อไป ดังนั้นระบบจะยกเลิกการเลือก Bob สำหรับฉัน:
$('#my-best-friend').val('').trigger('change');
หรือว่าฉันทำให้ระบบเลือกถัดไปในรายการแทน Bob:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
หมายเหตุเกี่ยวกับเว็บไซต์ Select 2 (ดูวิธีเลิกและลบออก ) ที่อาจเป็นประโยชน์ต่อผู้อื่น:
.select2 ('val')
วิธีการ "val" ถูกเลิกใช้แล้วและจะถูกลบใน Select2 4.1 วิธีที่เลิกใช้ไม่รวมพารามิเตอร์ triggerChange อีกต่อไป
คุณควรเรียก. วาลในองค์ประกอบพื้นฐานโดยตรงแทน หากคุณต้องการพารามิเตอร์ตัวที่สอง (triggerChange) คุณควรเรียก. trigger ("change") บนองค์ประกอบ
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');