JQuery kullanarak bir seçim kutusundaki ilk seçenek nasıl ayarlanır?


134

İki HTML selectkutum var. selectBaşka bir seçim yaptığımda bir kutuyu sıfırlamam gerekiyor .

<select id="name" >
    <option value="">select all</option>
    <option value="1">Text 1</option>
    <option value="2">Text 2</option>
    <option value="3">Text 3</option>
</select>

<select id="name2" >
    <option value="">select all</option>
    <option value="1">Text 1</option>
    <option value="2">Text 2</option>
    <option value="3">Text 3</option>
</select>

Ben ilk bir seçeneği seçtiğinizde select(yani id="name"), ikinciyi sıfırlamak için gerekmez selectiçin select all; Benzer şekilde, ne zaman saniyenin bir seçenek belirleyin select(örneğin id="name2"), ilk sıfırlamak için gerekmez selectiçin select all.

Bunu nasıl yapabilirim?


Başlığı [...] sıfırla [...] olarak [...] olarak değiştirdim [...] için ilk seçeneği ayarlayın çünkü sıfırlama varsayılan başlangıçta yüklenmiş değerin ayarlanmasını gerektirir
Pierre de LESPINAY

Yanıtlar:


277

Böyle bir şey hile yapmalıdır: https://jsfiddle.net/TmJCE/898/

$('#name2').change(function(){
    $('#name').prop('selectedIndex',0);
});


$('#name').change(function(){
    $('#name2').prop('selectedIndex',0);
});

15
Doğru, ama yine de temel konsepti gösteriyor ve bu durumda ilk seçenek olan "Tümünü Seç" olarak sıfırlamak istiyor gibi görünüyor.
Jack

2
Bunu bir <button>öğeden kullanıyorsanız, ayarlamadığınızdan emin olun type="reset". button
Yazı

3
Açılır listenin ilk öğesini seçiyorum ama metin hala eskisi.
VaTo

Bunu seçim kutusunun geri kalanı olarak kullanıyorum, tamam mı? Yoksa düzgün bir şekilde anlayamadım mı?
ankit suthar

1
@ankitsuthar Seçilen seçeneğini selectsağlanan değere değiştirecektir . select.prop('selectedIndex', 0)ilk seçeneği sıfırlar select.prop('selectedIndex', 1), ikinci seçeneğe ayarlar.
Jack

44

Seçili öğeyi ilk konumuna sıfırlamak istiyorsanız, en basit yol olabilir:

$('#name2').val('');

Belgedeki tüm seçili öğeleri sıfırlamak için:

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

DÜZENLE: Aşağıdaki açıklamaya göre açıklığa kavuşturmak için, bu, select öğesini ilk boş girişine ve yalnızca listede boş bir giriş varsa sıfırlar.


Evet bu neredeyse her zaman işe yarardı. Diğer çözümlerin bazen sorunları olabilir. Gerçekten de en basit yol.
Sworup Shakya

5
Yalnızca bir uyarı: bu yalnızca ilk seçeneğin seçili olmasını ve ilk seçeneğin bir değer kümesi boş olmasını istiyorsanız çalışır. İlk seçeneğiniz başka bir değere sahipse veya SEÇİM kutusundaki hiçbir seçeneğin boş değeri yoksa, bu herhangi bir değişikliği etkilemez. Veya başka bir seçeneğin boş değeri varsa, bunun yerine bu seçeneği seçer.
HBlackorby

@HBlackorby, yorumunuz yardımcı oldu, ancak 1) ile seçenek value=""herhangi bir sırada görünebilir. 2) Bir seçenek olmadan yani bir değer özelliğinin <option></option>yani boş bir dize değeri özniteliği bir seçenek olarak aynı değildir <option value=""></option>ve bunu ihtiyacımız temizlemek yapılan value="" kısmını hayır olmasa bile) 3 <option>boş dize değeri ile; ayarı .val('')"değişikliği etkiler", seçim boş olarak görünür, doğru değil mi? En azından Chrome'umda ...
Kırmızı Bezelye

21

Yorumlarda @PierredeLESPINAY tarafından belirtildiği gibi, orijinal çözümüm yanlıştı - açılır liste en üst seçeneğe sıfırlanacak, ancak yalnızca undefineddönüş değeri 0 dizinine çözüldüğü için.

İşte selectedmülkü dikkate alan doğru bir çözüm :

$('#name').change(function(){
    $('#name2').val(function () {
        return $(this).find('option').filter(function () {
            return $(this).prop('defaultSelected');
        }).val();
    });
});

DEMO : http://jsfiddle.net/weg82/257/


Orijinal cevap - INCORRECT

JQuery 1.6+ sürümünde .propvarsayılan seçimi almak için yöntemi kullanmanız gerekir :

// Resets the name2 dropdown to its default value
$('#name2').val( $('#name2').prop('defaultSelected') );

İlk açılır menü değiştiğinde dinamik olarak sıfırlanmasını sağlamak için .changeetkinliği kullanın :

$('#name').change(function(){
  $('#name2').val( $('#name2').prop('defaultSelected') );
});

Jens Roland ne dedi, viceversa desteği ile ^^ jsfiddle.net/weg82/2
zynaps

Ama tam tersi destek mantıklı değil - Bu büyük bir açılır listeye denktir. Anlamıyorum.
Jens Roland

yazmak yeterli$('#name2').val( $(this).prop('defaultSelected') );
vsync

@vsync: değil , hayır $(this)anlamına gelir$('#name')$('#name2')
Jens Roland

1
defaultSelectedBir olan <option>mülkiyet, her zaman dönecektir undefinedbir on<select>
Pierre de LESPINAY

7

Seçimi "seçili" özelliğe sahip seçeneğe sıfırlamak istiyorsanız bunu kullanın. Select form.reset () içindeki javascript işlevine benzer şekilde çalışır.

 $("#name").val($("#name option[selected]").val());

4

Bu bana çok yardımcı oluyor.

$(yourSelector).find('select option:eq(0)').prop('selected', true);

4

Sadece ilk seçeneğinize geri dönmek istiyorsanız, bunu nasıl çalıştıracağım, örneğin "Bir seçenek seçin" "Select_id_wrap" açıkçası seçimin etrafındaki div, ancak sadece bunun nasıl çalıştığına dair herhangi bir etki. Benimki bir tıklama işlevine sıfırlanır, ancak eminim ki bir değişiklik içinde de çalışacaktır ...

$("#select_id_wrap").find("select option").prop("selected", false);

3

Aşağıdaki kodu kullanın. Burada çalıştığını görün http://jsfiddle.net/usmanhalalit/3HPz4/

 $(function(){
     $('#name').change(function(){
         $('#name2 option[value=""]').attr('selected','selected');
     });

     $('#name2').change(function(){
         $('#name option[value=""]').attr('selected','selected');
     });
 });

Yine - sadece varsayılan ilk / boş olan olarak sabitse çalışır
Jens Roland

3

Bu da kullanılabilir

$('#name2').change(function(){
    $('#name').val('');//You can set the first value of first one if that is not empty
});


$('#name').change(function(){
    $('#name2').val('');
});

3

Bu, formunuzdaki tüm seçim kutularını sıfırlamanın en esnek / yeniden kullanılabilir yoludur.

      var $form = $('form') // Replace with your form selector
      $('select', $form).each(function() {
        $(this).val($(this).prop('defaultSelected'));
      });

1

Varsayılan değer olarak tanımlanan rastgele bir seçenek öğesiyle nasıl işleneceği aşağıda açıklanmıştır (bu durumda Metin 2 varsayılan değerdir):

<select id="name2" >
   <option value="">select all</option>
   <option value="1">Text 1</option>
   <option value="2" selected="selected">Text 2</option>
   <option value="3">Text 3</option>
</select>
<script>
    $('#name2 option[selected]').prop('selected', true);
</script>

0

Bunu deneyebilirsiniz:

$( 'select' ).each( function () {
    if ( $( this ).children().length > 0 ) {
        $( $( this ).children()[0] ).attr( 'selected', 'selected' );
        $( this ).change();
    }
} );

0

@Jens Roland tarafından jQuery v1.9.1 yanıtında defaultSelected özelliği kullanırken bir sorun yaşadım. Daha genel bir yol (birçok bağımlı seçimle), bağımlı seçimlerinize veri varsayılanı niteliği koymak ve daha sonra sıfırlama sırasında bunları yinelemek olacaktır.

<select id="name0" >
    <option value="">reset</option>
    <option value="1">Text 1</option>
    <option value="2">Text 2</option>
    <option value="3">Text 3</option>
</select>

<select id="name1" class="name" data-default="1">
    <option value="">select all</option>
    <option value="1" selected="true">Text 1</option>
    <option value="2">Text 2</option>
    <option value="3">Text 3</option>
</select>

<select id="name2" class="name" data-default="2">
    <option value="">select all</option>
    <option value="1">Text 1</option>
    <option value="2" selected="true">Text 2</option>
    <option value="3">Text 3</option>
</select>

Ve javascript ...

$('#name0').change(function(){
    if($('#name0').val() == '') {
        $('select.name').each(function(index){
          $(this).val($(this).data('default'))  
        })
    } else {
      $('select.name').val($('#name0').val() );
    }
});

Yukarıdakilerin çalışan bir sürümü için bkz. Http://jsfiddle.net/8hvqN/ .


0

Boş dize ("") değerine sahip seçim etiketinde yeni bir seçenek oluşturdum ve kullandım:

$("form.query").find('select#topic').val("");

0

Bağlama onchange olayı seçmek için jquery kullanın, ancak başka bir $(this)jquery nesnesi oluşturmanız gerekmez .

$('select[name=name2]').change(function(){
    if (this.value) {
        console.log('option value = ', this.value);
        console.log('option text  = ', this.options[this.selectedIndex].text);

        // Reset selected
        this.selectedIndex = this.defaultSelected;
    }
});

0

Tüm seçim alanlarını, seçilen özniteliğin tanımlandığı varsayılan seçeneğe sıfırlamak için bu kodu kullanın.

<select id="name1" >
    <option value="1">Text 1</option>
    <option value="2" selected="selected" >Default Text 2</option>
    <option value="3">Text 3</option>
</select>
<select id="name2" >
    <option value="1">Text 1</option>
    <option value="2">Text 2</option>
    <option value="3" selected="selected" >Default Text 3</option>
</select>
<script>
    $('select').each( function() {
        $(this).val( $(this).find("option[selected]").val() );
    });
</script>

0

İşte im kullanarak en iyi çözüm. Bu 1'den fazla slectbox için geçerli olacak

$("select").change(function(){
    var thisval = $(this).val();
    $("select").prop('selectedIndex',0);
    $(this).val(thisval);
})


0

Seçme öğesindeki ayar seçeneği 1, bu segment tarafından yapılabilir. Görsel olarak göstermek için, sonunda tp add .trigger ('change') var.

$('#name').removeAttr('selected').find('option:first').attr('selected', 'selected').trigger("change");
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.