Đối với phiên bản select2> = 4.0.0
Các giải pháp khác có thể không hoạt động, tuy nhiên các ví dụ sau sẽ hoạt động.
Giải pháp 1: Làm cho tất cả các sự kiện thay đổi được đính kèm kích hoạt, bao gồm select2
$('select').val('1').trigger('change');
Giải pháp 2: Gây ra sự kiện thay đổi JUST select2 để kích hoạt
$('select').val('1').trigger('change.select2');
Xem jsfiddle này cho ví dụ về những điều này. Cảm ơn @minlare cho Giải pháp 2.
Giải trình:
Nói rằng tôi có một người bạn tốt nhất chọn tên của mọi người. Vì vậy, Bob, Bill và John (trong ví dụ này tôi cho rằng Giá trị giống như tên). Đầu tiên tôi khởi tạo select2 trên phần chọn của mình:
$('#my-best-friend').select2();
Bây giờ tôi tự chọn Bob trong trình duyệt. Tiếp theo Bob làm điều gì đó nghịch ngợm và tôi không thích anh ta nữa. Vì vậy, hệ thống bỏ chọn Bob cho tôi:
$('#my-best-friend').val('').trigger('change');
Hoặc nói rằng tôi làm cho hệ thống chọn tiếp theo trong danh sách thay vì Bob:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Ghi chú trên trang web Chọn 2 (xem Phương pháp không dùng nữa và đã xóa ) có thể hữu ích cho người khác:
.select2 ('val')
Phương thức "val" đã không được chấp nhận và sẽ bị xóa trong Chọn2 4.1. Phương thức không dùng nữa không bao gồm tham số triggerChange.
Bạn nên gọi trực tiếp .val trên phần tử cơ bản thay thế. Nếu bạn cần tham số thứ hai (triggerChange), bạn cũng nên gọi .trigger ("thay đổi") trên phần tử.
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');