Saya memiliki daftar drop-down dengan nilai yang diketahui. Apa yang saya coba lakukan adalah mengatur daftar drop down ke nilai tertentu yang saya tahu ada menggunakan jQuery . Menggunakan JavaScript biasa , saya akan melakukan sesuatu seperti:
ddl = document.getElementById("ID of element goes here");
ddl.value = 2; // 2 being the value I want to set it too.
Namun, saya perlu melakukan ini dengan jQuery , karena saya menggunakan kelas CSS untuk pemilih saya ( id klien ASP.NET bodoh ...).
Berikut adalah beberapa hal yang saya coba:
$("._statusDDL").val(2); // Doesn't find 2 as a value.
$("._statusDDL").children("option").val(2) // Also failed.
Bagaimana saya bisa melakukannya dengan jQuery ?
Memperbarui
Jadi ternyata, saya benar pertama kali dengan:
$("._statusDDL").val(2);
Ketika saya menempatkan peringatan tepat di atas itu berfungsi dengan baik, tetapi ketika saya menghapus peringatan dan membiarkannya berjalan dengan kecepatan penuh, saya mendapatkan kesalahan
Tidak dapat mengatur properti yang dipilih. Indeks Tidak Valid
Saya tidak yakin apakah ini bug dengan jQuery atau Internet Explorer 6 (saya kira Internet Explorer 6 ), tetapi ini sangat menjengkelkan.
sumber
dd1 = document.getElementsByClassName('classname here'); dd1.value = 2;
Jawaban:
Dokumentasi jQuery menyatakan:
Perilaku ini dalam
jQuery
versi1.2
dan di atas.Anda kemungkinan besar menginginkan ini:
sumber
select
disembunyikan (display: none;
)? Saya tidak bisa membuatnya berfungsi dengan benar ...$('._statusDDL [value="2"]').attr('selected',true);
Terima kasih!.change()
untuk melihat opsi di frontend daftar dropdown, yaitu$('#myID').val(3).change();
Dengan bidang tersembunyi, Anda perlu menggunakan seperti ini:
atau
sumber
Hanya FYI, Anda tidak perlu menggunakan kelas CSS untuk mencapai ini.
Anda dapat menulis baris kode berikut untuk mendapatkan nama kontrol yang benar pada klien:
ASP.NET akan membuat ID kontrol dengan benar di dalam jQuery.
sumber
Coba saja dengan
dan tidak dengan
sumber
Solusi ini tampaknya menganggap bahwa setiap item dalam daftar drop-down Anda memiliki nilai val () yang berkaitan dengan posisi mereka dalam daftar drop-down.
Hal-hal sedikit lebih rumit jika ini tidak terjadi.
Untuk membaca indeks yang dipilih dari daftar drop-down, Anda akan menggunakan ini:
Untuk mengatur indeks yang dipilih dari daftar drop-down, Anda akan menggunakan ini:
Perhatikan bahwa fitur prop () memerlukan JQuery v1.6 atau yang lebih baru.
Mari kita lihat bagaimana Anda akan menggunakan kedua fungsi ini.
Andaikan Anda memiliki daftar nama bulan drop-down.
Anda bisa menambahkan tombol "Bulan Sebelumnya" dan "Bulan Depan", yang terlihat pada item daftar turun bawah yang dipilih saat ini, dan mengubahnya ke bulan sebelumnya / berikutnya:
Dan inilah JavaScript yang akan dijalankan tombol-tombol ini:
Situs berikut ini juga berguna, untuk menunjukkan cara mengisi daftar drop-down dengan data JSON:
http://mikesknowledledgebase.com/pages/Services/WebServices-Page8.htm
Fiuh !!
Semoga ini membantu.
sumber
Setelah melihat beberapa solusi, ini berhasil untuk saya.
Saya memiliki satu daftar drop-down dengan beberapa nilai dan saya ingin memilih nilai yang sama dari daftar drop-down yang lain ... Jadi pertama-tama saya memasukkan variabel ke
selectIndex
drop-down pertama saya.Kemudian, saya memilih indeks itu pada daftar drop-down kedua saya.
catatan:
Saya kira ini adalah solusi tersingkat, andal, umum, dan elegan.
Karena dalam kasus saya, saya menggunakan atribut data opsi yang dipilih alih-alih atribut nilai. Jadi, jika Anda tidak memiliki nilai unik untuk setiap opsi, metode di atas adalah yang terpendek dan manis !!
sumber
Saya tahu ini adalah pertanyaan lama dan solusi di atas berfungsi dengan baik kecuali dalam beberapa kasus.
Suka
Jadi Item 4 akan ditampilkan sebagai "Dipilih" di browser dan sekarang Anda ingin mengubah nilainya sebagai 3 dan menunjukkan "Item3" sebagai yang dipilih, bukan Item4. Jadi sesuai solusi di atas, jika Anda menggunakan
Anda akan melihat bahwa Item 3 dipilih di browser. Tetapi ketika Anda memproses data baik dalam php atau asp, Anda akan menemukan nilai yang dipilih sebagai "4". Alasannya adalah, html Anda akan terlihat seperti ini.
dan itu mendapatkan nilai terakhir sebagai "4" dalam bahasa sisi.
SEHINGGA SOLUSI AKHIR SAYA PADA REGARD INI
EDIT : Tambahkan satu kutipan di sekitar "+ newselectedIndex +" sehingga fungsionalitas yang sama dapat digunakan untuk nilai-nilai non-numerik.
Jadi yang saya lakukan sebenarnya, menghapus atribut yang dipilih dan kemudian membuat yang baru seperti yang dipilih.
Saya sangat menghargai komentar ini dari programmer senior seperti @strager, @ y0mbo, @ISIK dan lainnya
sumber
Jika kami memiliki dropdown dengan judul "Klasifikasi Data":
Kita bisa memasukkannya ke dalam variabel:
Kemudian masukkan ke variabel lain nilai yang kita inginkan dari dropdown:
Kemudian kita dapat menggunakan bidang yang kita masukkan
dataClsField
, mencarimyValue
dan membuatnya dipilih menggunakan.prop()
:Atau, Anda bisa saja menggunakan
.val()
, tetapi pemilih Anda.
hanya dapat digunakan jika cocok dengan kelas pada dropdown, dan Anda harus menggunakan tanda kutip pada nilai di dalam tanda kurung, atau cukup gunakan variabel yang kami atur sebelumnya:sumber
Saya sering mengalami hal ini ketika memuat data dari panggilan Ajax. Saya juga menggunakan .NET, dan butuh waktu untuk menyesuaikan diri dengan clientId saat menggunakan pemilih jQuery. Untuk memperbaiki masalah yang Anda hadapi dan untuk menghindari harus menambahkan
setTimeout
properti, Anda cukup "async: false
" memasukkan panggilan Ajax, dan itu akan memberi DOM cukup waktu untuk memiliki objek kembali yang Anda tambahkan ke pilih. Contoh kecil di bawah ini:sumber
Hanya sebuah catatan - Saya telah menggunakan pemilih wildcard di jQuery untuk mengambil item yang dikaburkan oleh ASP.NET CLient IDs - ini mungkin membantu Anda juga:
Catat id * wildcard- ini akan menemukan elemen Anda meskipun namanya "ctl00 $ ctl00 $ ContentPlaceHolder1 $ ContentPlaceHolder1 $ MyDropDown"
sumber
Saya menggunakan fungsi extended untuk mendapatkan id klien, seperti:
Kemudian Anda bisa memanggil kontrol ASP.NET di jQuery seperti ini:
sumber
Pilihan lain adalah mengatur parameter kontrol ClientID = "Static" di .net dan kemudian Anda dapat mengakses objek di JQuery dengan ID yang Anda atur.
sumber
Gunakan
$("select[name$='MyDropDown']").val()
.sumber
$
sehingga cocok, bukan 'diakhiri dengan'. Tetapi saran Anda mungkin lebih cepat daripada hanya mencocokkan dengan nama kelas. Lebih cepat lagi akanelement.classname
atau#idname
.Bagaimana Anda memuat nilai ke daftar turun bawah atau menentukan nilai mana yang harus dipilih? Jika Anda melakukan ini menggunakan Ajax, maka alasan Anda memerlukan penundaan sebelum pemilihan bisa terjadi karena nilai-nilai tidak dimuat pada saat baris yang bersangkutan dieksekusi. Ini juga akan menjelaskan mengapa itu bekerja ketika Anda meletakkan pernyataan peringatan di telepon sebelum mengatur status karena tindakan peringatan akan memberikan cukup penundaan untuk memuat data.
Jika Anda menggunakan salah satu metode Ajax jQuery, Anda dapat menentukan fungsi panggilan balik dan kemudian dimasukkan
$("._statusDDL").val(2);
ke fungsi panggilan balik Anda.Ini akan menjadi cara yang lebih dapat diandalkan untuk menangani masalah ini karena Anda dapat yakin bahwa metode dijalankan ketika data sudah siap, bahkan jika itu membutuhkan waktu lebih dari 300 ms.
sumber
ClientIDMode = "Static"
sumber
Dalam kasus saya, saya bisa membuatnya bekerja menggunakan metode .attr ().
sumber