JQuery ile seçilen <select> ilk seçeneği nasıl yapılır


547

JQuery ile seçilen ilk seçeneği nasıl yapabilirim?

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

Yanıtlar:


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

364
Bunun $ ("# target") [0] ile daha kolay yapıldığı unutulmamalıdır .selectedIndex = 0;
David Andres

17
Çalışır, ancak 1. öğe değerine dayanır, 1. öğe boş değer içeriyorsa, en yakın öğeyi değerle
seçer

2
IE6 dışında harika çalışıyor gibi görünüyor.
7-8'den

3
Önceki açıklamamı geri alıyorum, kendimden ileri gidiyordum. $ ( "# hedef") val ( "seçeneği: İlk."); IE6 $ ("target") hariç her yerde çalışır. val ($ ("# target option: first"). val ()); IE6'da çalışır, çünkü kelimenin tam anlamıyla ilk değeri ararsınız ve onu hedefin değeri olarak girersiniz. Bir yerine iki kimlik araması.
Nicholi

2
Ve aslında IE6, 7 ve 8 için gereklidir. Oysa .val ('seçenek: ilk') IE9'da (ve Safari ve Firefox ve Chrome ve Opera) çalışır.
Nicholi

178

Bunu deneyebilirsin

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

2
Bu her durumda düzgün çalışmaz. Bir ebeveyn / çocuk basamaklı açılanlarım var. Üst ebeveyn # 1'i seçin, alt # 1'i görüntüleyin, üst # 2 görüntü altını # 2'yi seçin. Yeni bir ebeveyn seçtiklerinde, karşılık gelen alt öğeyi ilk seçeneğe ayarlamalıdır. Bu çözüm bunu yapmaz. Çocuk menüsünü "yapışkan" bırakır. Daha fazla senaryoda çalışan cevap için şu soruya bakınız: selected.prop ('seçildi', yanlış) / option: ilk.prop ('seçildi', 'seçildi') çözümüne bakın.
Lance Cleveland

bu onChange olayını tetiklemez. En azından kromda.
Tomasz Mularczyk

Teşekkür ederim! Bu benim için işe yarayan cevaplar listesindeki ilk cevaptır.
Casey Crookston

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

@Romesh selectedIndex tabanını değere nasıl ayarlayabilirim?
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
İyi ikinci yaklaşım. Lütfen seçilen özelliğin değerini ekleyin. Örneğin, attr ("seçili", "seçili"). Bu ekstra parametre olmadan seçim yapılmaz.
David Andres

@EgorPavlikhin - Cevabı daha önce seçilmiş olan seçeneklerden "seçilen" bayrağı kaldırmak için JQuery kodunu içerecek şekilde düzenledim. Şimdi cevap doğru :)
jmort253 21

20
İşleve gerek yoktur each, şöyle olmalıdır: $('#target option[selected="selected"]').removeAttr('selected')şimdi removePropve propyerine de kullanılmalıdır .
vsync

James Lee Baker'ın bu sorunun başka bir yerinde cevabının daha kapsamlı bir versiyonu olsa da, arayüz iyi yönetiliyorsa gerekli olmayabilecek hesaplama döngüleri ekliyor.
Lance Cleveland

65

Kullandığınızda

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

ilk seçenek değeri boşsa Chrome ve Safari'de çalışmaz.

tercih ederim

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

çünkü tüm tarayıcılarda çalışabilir.


3
Bunun daha fazla durumda çalışması için önceden seçilen öğelerin "seçimini kaldırmanız" gerekir. Ayrıntılar için James Lee Baker'ın cevabına bakınız.
Lance Cleveland

44

Seçme girişinin değerini değiştirmek veya seçilen özniteliği ayarlamak, DOM öğesinin varsayılan seçilmişOptions özelliğinin üzerine yazabilir ve reset olayı çağrılmış bir formda düzgün bir şekilde sıfırlanamayan bir öğeye neden olabilir.

Gereken seçeneği temizlemek ve ayarlamak için jQuery'nin prop yöntemini kullanın:

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

3
Mükemmel. Basamaklı açılır menülerim var. Bir kullanıcı üst seçenek 2'yi seçtiğinde alt seçenek 3'ü "yapışmasını" istemiyorum. Başka bir deyişle, kullanıcı daha sonra ebeveyn # 1'i, ardından ebeveyn # 2'yi tekrar seçer. Bu olduğunda, çocuk menüsünün ilk seçeneğe (benim durumumda "Herhangi") sıfırlanmasını istiyorum. Buradaki diğer tüm çözümler Firefox v19'da ve Linux'ta Chrome'da başarısız oluyor.
Lance Cleveland

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

1
Bir açılır listenin önceden seçilmiş bir öğeye sahip olduğu durumlarda bu çalışmaz. Ayrıntılar için seçilen cevaptaki yorumlarıma bakın.
Lance Cleveland

21

En çok oy alan cevaplar hakkında keşfettiğimi düşündüğüm ince bir nokta , seçilen değeri doğru bir şekilde değiştirseler bile, kullanıcının gördüğü öğeyi güncellememeleri (yalnızca widget'ı tıkladıklarında güncellenmiş öğe).

Bir .change () çağrısını sonuna kadar zincirlemek, kullanıcı arabirimi widget'ını da güncelleştirir.

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

(Bunu jQuery Mobile ve Chrome masaüstünde bir kutu kullanırken fark ettim, bu yüzden bu her yerde böyle olmayabilir).


Bir .change () çağrısını sonuna kadar zincirlemek, kullanıcı arabirimi widget'ını da güncelleştirir.
codemirror

17

Devre dışı bırakılmış seçenekleriniz varsa , aşağıdakilerle sonuçlanan seçeneklerin seçilmesini engellemek için ([devre dışı]) öğesi ekleyebilirsiniz :

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

1
Engelli seçenekler hakkında iyi bir nokta. Sunulan cevaplara güzel bir ek!
Lance Cleveland

16

Değerleri sıfırlamanın başka bir yolu (seçilen birden çok öğe için) şu olabilir:

$("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
+1 aslında iyi bir cevap, ancak bunu soru alanına daha özel hale getirmiş olabilirsiniz; onun yerine $("selector")az önce yazmış olabilirsiniz$('#target')
Ja͢ck


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

Bu yalnızca önceden seçili seçenek yoksa çalışır. James Lee Baker'ın cevabına bakın.
Webars

6

Zaten seçilmiş bir öznitelik varsa, sadece attr seçilen ayarın çalışmadığını gördüm. Şimdi kullandığım kod önce seçilen özniteliğin ayarını kaldırır, ardından ilk seçeneği seçer.

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

Bu iyi çalışıyor ve James Lee Baker'ın bu soruda başka bir yerde kaydettiği cevaba çok benziyor. Ben seçeneği ile diğer cevap gibi: seçilen ve seçenek: ilk seçenek yürütme olarak: ilk büyük olasılıkla find () daha hızlı (compute-wise) olacak.
Lance Cleveland

5

Her bir işlev muhtemelen gerekli olmasa da ...

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

benim için çalışıyor.


5

İşte nasıl yaparım:

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

1
Bu iyi çalışıyor ve James Lee Baker'ın bu soruda başka bir yerde kaydettiği cevaba çok benziyor. Ben seçeneği ile diğer yanıtı seviyorum: seçilen ve seçenek: ilk seçenek yürütme olarak: ilk büyük olasılıkla find () daha hızlı (compute-wise) olacak.
Lance Cleveland

2

Sadece sonunda bir tetikleyici ('değişiklik') kullanarak benim için çalıştı, şöyle:

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

2

İlk seçeneği varsayılan olarak aşağıdaki gibi kullanacaksanız

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

o zaman sadece kullanabilirsiniz:

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

Güzel ve basit.



1

James Lee Baker'ın cevabının arkasında, tarayıcı desteğine olan güveni kaldırdığı için bu çözümü tercih ediyorum: ilk: seçili ...

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

1

Benim için sadece aşağıdaki kodu eklediğimde çalıştı:

.change();

Benim için sadece aşağıdaki kodu eklediğimde çalıştı: Formu "sıfırlamak" istedim, yani, formun tüm seçimlerinin tüm ilk seçeneklerini seçin, ben aşağıdaki kodu kullandım:

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


1

kullanın:

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

Lütfen bu JSFiddle'da basit çalışmayı bulun .


15, 25 veya belirli bir metinle pozisyona ne dersiniz? : D
Marcelo Agimóvel

Aramak .val()listedeki ilk seçeneğin değerini alır. Orijinal soruda sorulduğu gibi aslında ilk seçeneği seçmez (seç).
Funka

1

Benim için, sadece aşağıdaki kod satırını eklediğimde çalıştı

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


0

Select öğesinin jQuery nesnesini saklıyorsanız:

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

...

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

0

ECMAScript 6 ile jQuery kullanarak bu en iyi yaklaşımı kontrol edin :

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

0

dropdownKullanarak herhangi bir seçeneği seçebilirsiniz .

// '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)

Değiştir id özellikle seçme etiketi kimliği ile endeks seçmek istediğiniz belirli öğesiyle.

yani

<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>

Yani burada ilk eleman seçimi için aşağıdaki kodu kullanacağım:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.