Untuk versi select2> = 4.0.0
Solusi lain mungkin tidak berfungsi, namun contoh berikut ini harus berfungsi.
Solusi 1: Menyebabkan semua peristiwa perubahan terlampir untuk memicu, termasuk select2
$('select').val('1').trigger('change');
Solusi 2: Penyebab JUST select2 ubah acara untuk memicu
$('select').val('1').trigger('change.select2');
Lihat jsfiddle ini untuk contohnya. Terima kasih kepada @minlare untuk Solusi 2.
Penjelasan:
Katakanlah saya punya sahabat pilih dengan nama orang. Jadi Bob, Bill, dan John (dalam contoh ini saya asumsikan nilainya sama dengan namanya). Pertama saya menginisialisasi select2 pada pilih saya:
$('#my-best-friend').select2();
Sekarang saya secara manual memilih Bob di browser. Selanjutnya Bob melakukan sesuatu yang nakal dan aku tidak menyukainya lagi. Jadi sistem membatalkan pilihan Bob untuk saya:
$('#my-best-friend').val('').trigger('change');
Atau katakan saya membuat sistem memilih yang berikutnya dalam daftar alih-alih Bob:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Catatan pada situs web Select 2 (lihat Metode usang dan dihapus ) yang mungkin berguna untuk orang lain:
.select2 ('val')
Metode "val" telah usang dan akan dihapus di Select2 4.1. Metode yang tidak lagi digunakan tidak lagi menyertakan parameter triggerChange.
Anda harus langsung memanggil .val pada elemen yang mendasarinya. Jika Anda membutuhkan parameter kedua (triggerChange), Anda juga harus memanggil .trigger ("change") pada elemen.
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');
change
acara tersebut (seperti memuat ulang formulir). Kalau tidak, tindakan-tindakan itu akan dipanggil secara berlebihan setelah dipicuchange()
.onChange
)Melihat dokumen select2 yang Anda gunakan di bawah ini untuk mendapatkan / mengatur nilainya.
@PanPipes telah menunjukkan bahwa ini telah berubah untuk 4.x (buka undiannya di bawah).
val
sekarang disebut secara langsung$("#select").val("CA");
Jadi di dalam
loadComplete
jqGrid Anda bisa mendapatkan nilai apa pun yang Anda cari kemudian mengatur nilai kotak pilih.Pemberitahuan dari dokumen
sumber
val
panggilan.<select>
dikonversi keselect2
kontrol dengan menguji keberadaan kelasselect2-offscreen
di<select>
. Semua elemen toolbar pencarian memiliki id yang dimulai dengangs_
awalan dan memiliki nama seperti dicolModel
. Anda bisa menggunakannyagetGridParam
untuk mendapatkannyacolModel
.select2
pilih. Saya akan melihat lagi hari ini, mungkin dengan mata segar saya bisa memperbaikinya. Terima kasih lagi. Pembaruan: membungkus kode dalam pemeriksaan boolean memperbaiki masalah yang saya alami, meskipun berhenti menyegarkan dari bilah pencarian daripada memilih elemen sebelumnya lagi.ini seharusnya bisa membantu.
sumber
Ini seharusnya lebih mudah.
Tetapi pastikan nilai yang Anda berikan sudah ada dalam HTMl
sumber
Jika Anda ingin menambahkan
value='newValue'
dantext='newLabel'
, Anda harus menambahkan kode ini:Tambahkan Opsi baru ke
<select>
:Pemicu
<select>
perubahan ke nilai yang dipilih:sumber
Hanya ingin menambahkan jawaban kedua. Jika Anda telah membuat pilih sebagai select2 , Anda harus memiliki yang tercermin dalam pemilih Anda sebagai berikut:
sumber
Anda memiliki dua opsi - karena jawaban @PanPipes menyatakan Anda dapat melakukan hal berikut.
Ini adalah solusi yang dapat diterima hanya jika seseorang tidak memiliki tindakan khusus yang terikat pada acara perubahan. Solusi yang saya gunakan dalam situasi ini adalah untuk memicu acara khusus select2 yang memperbarui pilihan yang ditampilkan select2.
sumber
Memiliki beberapa masalah dengan pengaturan opsi String yang dipilih di select2:
Dengan opsi: "option string1 / option" digunakan:
TETAPI dengan opsi dengan nilai: nilai opsi "E" string1 / option:
Berharap ini membantu seseorang yang berjuang dengan masalah yang sama.
sumber
jika Anda ingin memilih satu nilai kemudian gunakan
$('#select').val(1).change()
jika Anda ingin memilih beberapa nilai, maka tetapkan nilai dalam array sehingga Anda dapat menggunakan kode ini
$('#select').val([1,2,3]).change()
sumber
Untuk V4 Select2 jika Anda ingin mengubah nilai select2 dan representasi teks dari drop down.
Ini tidak hanya akan mengatur nilai di balik layar tetapi juga tampilan teks untuk select2.
Ditarik dari https://select2.github.io/announcements-4.0.html#removed-methods
sumber
Kode saya yang diharapkan:
bekerja dengan sempurna terima kasih kepada @PanPipes untuk yang bermanfaat.
sumber
melakukan hal ini
sumber
jika Anda memiliki sumber data ajax silakan lihat ini untuk bug gratis
https://select2.org/programmatic-control/add-select-clear-items
// Atur kontrol Select2
// Ambil item yang dipilih sebelumnya, dan tambahkan ke kontrol
sumber
jika Anda ingin mengatur item yang dipilih ketika Anda tahu teks dari daftar drop-down dan tidak tahu nilainya, berikut adalah contohnya:
Katakanlah Anda mengetahui zona waktu dan ingin mengaturnya, tetapi nilainya ada
time_zone_id
di dalamnya.sumber
Font: Pilih 2 dokumentasi
sumber
Anda cukup menggunakan metode get / set untuk mengatur nilai
atau Anda dapat melakukan ini:
sumber