Saya memiliki kontrol pilih, dan dalam variabel javascript saya memiliki string teks.
Menggunakan jQuery, saya ingin mengatur elemen yang dipilih dari kontrol pilih menjadi item dengan deskripsi teks yang saya miliki (sebagai lawan dari nilai, yang tidak saya miliki).
Saya tahu pengaturannya dengan nilai cukup sepele. misalnya
$("#my-select").val(myVal);
Tapi saya agak bingung melakukannya melalui deskripsi teks. Saya kira harus ada cara untuk mendapatkan nilai dari deskripsi teks, tetapi otak saya terlalu Jumat sore-red untuk bisa menyelesaikannya.
javascript
jquery
DanSingerman
sumber
sumber
Jawaban:
Pilih menurut deskripsi untuk jQuery v1.6 +
Versi jQuery di bawah 1.6 dan lebih besar dari atau sama dengan 1.4
Perhatikan bahwa meskipun pendekatan ini akan berfungsi dalam versi yang di atas 1,6 tetapi kurang dari 1,9, itu telah ditinggalkan sejak 1.6. Ini tidak akan berfungsi di jQuery 1.9+.
Versi sebelumnya
val()
harus menangani kedua kasus.sumber
value
jika atribut telah ditentukan, dan hanya memilih dengan teks jikavalue
atribut tersebut hilang. Jadi dalam contoh ini$('select').val('Two')
akan memilih opsi kedua di 1.3.x, tetapi tidak akan melakukan apa pun di 1.4.x.Saya belum menguji ini, tetapi ini mungkin bekerja untuk Anda.
sumber
Coba ini ... untuk memilih opsi dengan teks myText
sumber
$("#my-Select option[text=" + myText +"]").get(0).selected = true;
gaya klasik dari waktu ke waktu: (....prop
sebagai ganti.attr
; penyebab perubahannya adalah di 1.9 jQuery menonaktifkan peretasan lama yang memungkinkan Anda menggunakan.attr
untuk mengubah beberapa properti DOM serta atribut HTML. (Googlejavascript dom properties vs attributes
jika Anda tidak tahu perbedaannya.).prop('selected', true)
alih-alih.attr('selected', 'selected')
untuk kompatibilitas jQuery 1.9+.Saya melakukannya dengan cara ini (jQuery 1.9.1)
Catatan: jangan lupa perubahan (), saya harus mencari terlalu lama karena itu :)
sumber
akan mengembalikan nilai opsi pertama yang berisi deskripsi teks Anda. Menguji ini dan berhasil.
sumber
Untuk menghindari semua komplikasi versi jQuery, jujur saya sarankan menggunakan salah satu dari fungsi javascript yang sangat sederhana ini ...
sumber
Saya tahu ini adalah posting lama, tapi saya tidak bisa memilihnya dengan teks menggunakan jQuery 1.10.3 dan solusi di atas. Saya akhirnya menggunakan kode berikut (variasi solusi spoulson):
Semoga ini bisa membantu seseorang.
sumber
Baris ini berfungsi:
sumber
Pernyataan if benar-benar cocok dengan "dua" dan "dua tiga" tidak akan cocok
sumber
Cara termudah dengan 1.7+ adalah:
1.9+
Diuji dan bekerja.
sumber
.prop
untuk mengubah properti DOM, bukan.attr
(yang untuk atribut HTML / DOM). Lihat stackoverflow.com/q/5874652/1709587Ini cara yang sangat sederhana. tolong gunakan itu
sumber
lihat di plugin jquery selectedbox
Pilih opsi berdasarkan nilai, menggunakan string sebagai parameter
$("#myselect2").selectOptions("Value 1");
, atau ekspresi reguler$("#myselect2").selectOptions(/^val/i);
.Anda juga dapat menghapus opsi yang sudah dipilih:
$("#myselect2").selectOptions("Value 2", true);
sumber
Hanya sebagai catatan. Nilai yang saya pilih tidak disetel. Dan saya telah mencari di internet. Sebenarnya saya harus memilih nilai setelah panggilan balik dari layanan web, karena saya mendapatkan data darinya.
Jadi penyegaran pemilih adalah satu-satunya hal yang saya lewatkan.
sumber
Saya menemukan bahwa dengan menggunakan
attr
Anda akan berakhir dengan beberapa opsi yang dipilih ketika Anda tidak mau - solusinya adalah menggunakanprop
:$("#myDropDown option:text=" + myText +"").prop("selected", "selected");
sumber
Saya punya masalah dengan contoh di atas, dan masalah itu disebabkan oleh kenyataan bahwa nilai kotak pilih saya diawali dengan string panjang tetap 6 karakter, tetapi parameter yang diteruskan tidak panjang tetap.
Saya memiliki fungsi rpad yang akan menempel pad string, dengan panjang yang ditentukan, dan dengan karakter yang ditentukan. Jadi, setelah mengisi parameter itu berfungsi.
sumber
sumber
Jawaban yang diterima ini tampaknya tidak benar, sementara .val ('newValue') benar untuk fungsinya, mencoba untuk mengambil pilih dengan namanya tidak berfungsi untuk saya, saya harus menggunakan id dan nama kelas untuk mendapatkan elemen saya
sumber
Inilah opsi yang mudah. Cukup atur opsi daftar Anda lalu tetapkan teksnya sebagai nilai yang dipilih:
sumber
Dapatkan anak-anak dari kotak pilih; loop melalui mereka; ketika Anda telah menemukan yang Anda inginkan, aturlah sebagai opsi yang dipilih; return false untuk menghentikan perulangan.
sumber