Cara membuat opsi pertama <select> dipilih dengan jQuery


548

Bagaimana cara membuat opsi pertama yang dipilih dengan jQuery?

<select id="target">
  <option value="1">...</option>
  <option value="2">...</option>
</select>

Jawaban:


957
$("#target").val($("#target option:first").val());

364
Harus dicatat bahwa ini lebih mudah dilakukan dengan $ ("# target") [0] .selectedIndex = 0;
David Andres

17
Ini berfungsi, tetapi didasarkan pada nilai elemen 1 , jika elemen 1 berisi nilai kosong, itu akan memilih elemen terdekat DENGAN nilai
evilReiko

2
Tampaknya bekerja dengan baik, kecuali untuk IE6. Tidak yakin 7-8, bekerja pada 9.
Nicholi

3
Saya menyangkal pernyataan saya sebelumnya, maju sendiri. $ ("# target"). val ("option: first"); bekerja paling banyak di mana-mana kecuali IE6 $ ("target"). akan bekerja di IE6, karena Anda benar-benar mencari nilai pertama, dan memasukkannya sebagai nilai target. Dua pencarian id, bukan satu.
Nicholi

2
Dan itu sebenarnya diperlukan untuk IE6, 7, dan 8. Sedangkan .val ('option: first') berfungsi di IE9 (dan Safari dan Firefox dan Chrome dan Opera).
Nicholi

178

Anda bisa mencoba ini

$("#target").prop("selectedIndex", 0);

2
Ini tidak berfungsi dengan baik dalam semua kasus. Saya memiliki drop down orangtua / anak cascading. Pilih induk # 1, tampilan anak # 1, pilih orangtua # 2 tampilan anak # 2. Setiap kali mereka memilih induk baru, itu harus mengatur anak yang sesuai kembali ke opsi pertama. Solusi ini tidak melakukan ini. Meninggalkan menu anak "lengket". Lihat opsi: terpilih.prop ('terpilih', salah) / opsi: first.prop ('terpilih', 'terpilih') solusi pada pertanyaan ini untuk jawaban yang bekerja di lebih banyak skenario.
Lance Cleveland

ini tidak memicu acara Ubah. Setidaknya dalam chrome.
Tomasz Mularczyk

Terima kasih! Ini adalah jawaban pertama dalam daftar jawaban yang cocok untuk saya.
Casey Crookston

6
@Tomasz$("#target").prop("selectedIndex", 0).change();
mplungjan

@Romesh bagaimana saya bisa menetapkan nilai berdasarkanIndex yang dipilih?
Junior Frogie

111
// remove "selected" from any options that might already be selected
$('#target option[selected="selected"]').each(
    function() {
        $(this).removeAttr('selected');
    }
);


// mark the first option as selected
$("#target option:first").attr('selected','selected');

1
Pendekatan kedua yang bagus. Harap tambahkan nilai atribut yang dipilih. Misalnya, attr ("terpilih", "terpilih"). Tanpa parameter tambahan ini, pemilihan tidak dilakukan.
David Andres

@EgorPavlikhin - Saya baru saja mengedit jawaban untuk menyertakan kode JQuery untuk menghapus bendera "terpilih" dari semua opsi yang mungkin sudah dipilih. Sekarang jawabannya sudah benar :)
jmort253

20
Tidak perlu eachfungsi, harus: $('#target option[selected="selected"]').removeAttr('selected')juga sekarang harus digunakan dengan removePropdan propsebagai gantinya.
vsync

Versi yang lebih menyeluruh dari jawaban James Lee Baker di tempat lain pada pertanyaan ini, meskipun menambahkan siklus komputasi yang mungkin tidak diperlukan jika antarmuka dikelola dengan baik.
Lance Cleveland

65

Saat Anda menggunakan

$("#target").val($("#target option:first").val());

ini tidak akan berfungsi di Chrome dan Safari jika nilai opsi pertama adalah nol.

saya lebih memilih

$("#target option:first").attr('selected','selected');

karena bisa bekerja di semua browser.


3
Anda juga perlu "batalkan pilihan" elemen yang dipilih sebelumnya agar ini berfungsi dalam lebih banyak kasus. Lihat jawaban dari James Lee Baker untuk detailnya.
Lance Cleveland

44

Mengubah nilai input yang dipilih atau menyesuaikan atribut yang dipilih dapat menimpa propertiOpsi yang dipilih secara default dari elemen DOM, menghasilkan elemen yang mungkin tidak me-reset dengan benar dalam bentuk yang memiliki event reset yang dipanggil.

Gunakan metode prop jQuery untuk menghapus dan mengatur opsi yang diperlukan:

$("#target option:selected").prop("selected", false);
$("#target option:first").prop("selected", "selected");

3
Sempurna. Saya memiliki menu drop down cascading. Ketika seorang pengguna memilih opsi orang tua 2 maka opsi anak 3 saya tidak ingin itu "tetap". Dengan kata lain, pengguna kemudian memilih induk # 1, lalu memilih kembali induk # 2. Ketika itu terjadi, saya ingin menu anak untuk mengatur ulang ke opsi pertama (yaitu "Apa" dalam kasus saya). Semua solusi lain di sini gagal pada Firefox v19 dan Chrome di Linux.
Lance Cleveland

33
$("#target")[0].selectedIndex = 0;

1
Ini tidak akan berfungsi dalam kasus di mana drop-down memiliki item yang dipilih sebelumnya. Lihat komentar saya pada jawaban yang dipilih untuk detailnya.
Lance Cleveland

21

Satu titik halus yang saya pikir telah saya temukan tentang jawaban pilihan teratas adalah bahwa meskipun mereka benar mengubah nilai yang dipilih, mereka tidak memperbarui elemen yang dilihat pengguna (hanya ketika mereka mengklik widget mereka akan melihat cek di sebelah elemen yang diperbarui).

Memanggil panggilan .change () hingga akhir juga akan memperbarui widget UI.

$("#target").val($("#target option:first").val()).change();

(Perhatikan bahwa saya perhatikan ini saat menggunakan jQuery Mobile dan sebuah kotak di desktop Chrome, jadi ini mungkin tidak terjadi di mana-mana).


Memanggil panggilan .change () hingga akhir juga akan memperbarui widget UI.
codemirror

17

Jika Anda memiliki opsi yang dinonaktifkan, Anda dapat menambahkan tidak ([dinonaktifkan]) untuk mencegah memilihnya yang menghasilkan hal-hal berikut:

$("#target option:not([disabled]):first").attr('selected','selected')

1
Poin bagus tentang opsi yang dinonaktifkan. Tambahan yang bagus untuk jawaban yang disajikan!
Lance Cleveland

16

Cara lain untuk mereset nilai (untuk beberapa elemen yang dipilih) dapat berupa ini:

$("selector").each(function(){

    /*Perform any check and validation if needed for each item */

    /*Use "this" to handle the element in javascript or "$(this)" to handle the element with jquery */

    this.selectedIndex=0;

});

4
Memberi +1 sebenarnya jawaban yang bagus, tetapi Anda bisa membuatnya lebih spesifik untuk domain pertanyaan; alih-alih $("selector")Anda bisa saja menulis$('#target')
Ja͢ck


7
$('#newType option:first').prop('selected', true);

Ini hanya berfungsi jika tidak ada opsi yang dipilih. Lihat jawaban James Lee Baker.
Webar

6

Saya telah menemukan bahwa hanya pengaturan attr yang dipilih tidak berfungsi jika sudah ada atribut yang dipilih. Kode yang saya gunakan sekarang pertama-tama akan menghapus atribut yang dipilih, lalu pilih opsi pertama.

$('#target').removeAttr('selected').find('option:first').attr('selected', 'selected');

Ini bekerja dengan baik dan sangat mirip dengan jawaban oleh James Lee Baker yang dicatat di tempat lain pada pertanyaan ini. Saya suka jawaban lain dengan opsi: terpilih dan opsi: pertama sebagai eksekusi opsi: pertama cenderung lebih cepat (berdasarkan perhitungan) daripada find ().
Lance Cleveland

5

Meskipun masing-masing fungsi mungkin tidak diperlukan ...

$('select').each(function(){
    $(this).find('option:first').prop('selected', 'selected');
});

bekerja untukku.


5

Inilah cara saya akan melakukannya:

$("#target option")
    .removeAttr('selected')
    .find(':first')     // You can also use .find('[value=MyVal]')
        .attr('selected','selected');

1
Ini bekerja dengan baik dan sangat mirip dengan jawaban oleh James Lee Baker yang dicatat di tempat lain pada pertanyaan ini. Saya suka jawaban lain dengan opsi: terpilih dan opsi: pertama sebagai eksekusi opsi: pertama cenderung lebih cepat (berdasarkan perhitungan) daripada find ().
Lance Cleveland

2

Itu hanya berfungsi untuk saya menggunakan pemicu ('perubahan') pada akhirnya, seperti ini:

$("#target option:first").attr('selected','selected').trigger('change');

2

Jika Anda akan menggunakan opsi pertama sebagai suka standar

<select>
    <option value="">Please select an option below</option>
    ...

maka Anda bisa menggunakan:

$('select').val('');

Itu bagus dan sederhana.



1

Di belakang balasan James Lee Baker, saya lebih suka solusi ini karena menghilangkan ketergantungan pada dukungan browser untuk: pertama: yang dipilih ...

$('#target').children().prop('selected', false);
$($('#target').children()[0]).prop('selected', 'selected');

1

Bagi saya itu hanya berfungsi ketika saya menambahkan kode berikut:

.change();

Bagi saya itu hanya berfungsi ketika saya menambahkan kode berikut: Karena saya ingin "mengatur ulang" formulir, yaitu, pilih semua opsi pertama dari semua pilihan formulir, saya menggunakan kode berikut:

$('form').find('select').each(function(){ $(this).val($("select option:first").val()); $(this).change(); });


1

Menggunakan:

$("#selectbox option:first").val()

Silakan temukan kerja sederhana di JSFiddle ini .


Bagaimana dengan posisi 15, 25, atau dengan teks tertentu? : D
Marcelo Agimóvel

Memanggil .val()hanya mendapatkan nilai opsi pertama dalam daftar. Sebenarnya tidak memilih (memilih) pilihan pertama, seperti yang ditanyakan dalam pertanyaan awal.
Funka

1

Bagi saya, itu hanya berfungsi ketika saya menambahkan baris kode berikut

$('#target').val($('#target').find("option:first").val());


0

Jika Anda menyimpan objek jQuery dari elemen pilih:

var jQuerySelectObject = $("...");

...

jQuerySelectObject.val(jQuerySelectObject.children().eq(0).val());

0

Periksa pendekatan terbaik ini menggunakan jQuery dengan ECMAScript 6 :

$('select').each((i, item) => {
  var $item = $(item);
  $item.val($item.find('option:first').val()); 
});

0

Anda dapat memilih opsi apa saja dropdowndengan menggunakannya.

// 'N' can by any number of option.  // e.g.,  N=1 for first option
$("#DropDownId").val($("#DropDownId option:eq(N-1)").val()); 

0

$('select#id').val($('#id option')[index].value)

Ganti id dengan id tag pilih tertentu dan indeks dengan elemen tertentu yang ingin Anda pilih.

yaitu

<select class="input-field" multiple="multiple" id="ddlState" name="ddlState">
                                        <option value="AB">AB</option>
                                        <option value="AK">AK</option>
                                        <option value="AL">AL</option>
</select>

Jadi di sini untuk pemilihan elemen pertama saya akan menggunakan kode berikut:

$('select#ddlState').val($('#ddlState option')[0].value)

-1

Menggunakan:

alert($( "#target option:first" ).text());
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.