Các câu trả lời tuyệt vời cung cấp bởi @fmpwizard làm việc cho Select2 3.5.2 và dưới, nhưng nó sẽ không làm việc trong 4.0.0 .
Từ rất sớm (nhưng có lẽ không sớm như câu hỏi này), Select2 đã hỗ trợ "gắn thẻ": nơi người dùng có thể thêm giá trị của riêng họ nếu bạn cho phép họ. Điều này có thể được kích hoạt thông qua tags
tùy chọn và bạn có thể chơi xung quanh với một ví dụ trong tài liệu .
$("select").select2({
tags: true
});
Theo mặc định, điều này sẽ tạo ra một tùy chọn có cùng văn bản với cụm từ tìm kiếm mà họ đã nhập. Bạn có thể sửa đổi đối tượng được sử dụng nếu bạn đang tìm cách đánh dấu nó theo một cách đặc biệt hoặc tạo đối tượng từ xa sau khi nó được chọn.
$("select").select2({
tags: true,
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
}
});
Ngoài việc phục vụ như một cờ dễ dàng phát hiện trên đối tượng được truyền qua select2:select
sự kiện, thuộc tính bổ sung còn cho phép bạn hiển thị tùy chọn hơi khác trong kết quả. Vì vậy, nếu bạn muốn báo hiệu trực quan thực tế rằng đó là một tùy chọn mới bằng cách đặt " (mới) " bên cạnh nó, bạn có thể làm một cái gì đó như thế này.
$("select").select2({
tags: true,
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
},
templateResult: function (data) {
var $result = $("<span></span>");
$result.text(data.text);
if (data.newOption) {
$result.append(" <em>(new)</em>");
}
return $result;
}
});