The jawaban yang sangat baik yang disediakan oleh @fmpwizard bekerja untuk Select2 3.5.2 dan bawah, tapi itu tidak akan berhasil di 4.0.0 .
Sejak awal (tapi mungkin tidak sedini pertanyaan ini), Select2 telah mendukung "pemberian tag": di mana pengguna dapat menambahkan nilai mereka sendiri jika Anda mengizinkannya. Ini dapat diaktifkan melalui tags
opsi, dan Anda dapat bermain-main dengan contoh di dokumentasi .
$("select").select2({
tags: true
});
Secara default, ini akan membuat opsi yang memiliki teks yang sama dengan istilah pencarian yang mereka masukkan. Anda dapat memodifikasi objek yang digunakan jika Anda ingin menandainya dengan cara khusus, atau membuat objek dari jarak jauh setelah dipilih.
$("select").select2({
tags: true,
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
}
});
Selain berfungsi sebagai tanda yang mudah dikenali pada objek yang diteruskan melalui select2:select
acara, properti tambahan juga memungkinkan Anda merender opsi sedikit berbeda pada hasilnya. Jadi, jika Anda ingin memberi sinyal visual bahwa ini adalah opsi baru dengan meletakkan " (baru) " di sebelahnya, Anda dapat melakukan sesuatu seperti ini.
$("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;
}
});