Açılır listede boş öğe olmadan boş HTML SELECT


110

Subj nasıl uygulanır?

yazdığımda:

<form>
  <select>
     <option value="0">aaaa</option>
     <option value="1">bbbb</option>
  </select>
</form>

varsayılan olarak seçilen öğe "aaaa" olur

yazdığımda:

<form>
  <select>
     <option value=""></option>
     <option value="0">aaaa</option>
     <option value="1">bbbb</option>
  </select>
</form>

varsayılan olarak seçilen öğe boştur, ancak bu boş öğe açılır menüde gösterilir.

Açılır listede gizli olan varsayılan boş değere sahip SELECT etiketini nasıl uygulayabilirim?


Yanıtlar:


182

Sadece devre dışı ve / veya gizli öznitelikleri kullanın:

<option selected disabled hidden style='display: none' value=''></option>
  • selected bu seçeneği varsayılan seçenek yapar.
  • disabled bu seçeneği tıklanamaz hale getirir.
  • style='display: none'bu seçeneğin eski tarayıcılarda görüntülenmemesini sağlar. Bakın: Kullanabilir miyim Gizli öznitelik için belgeleri kullanabilir ?
  • hidden bu seçeneğin açılır listede görüntülenmemesini sağlar.

3
Aslında IE 11 "gizli" seçeneğini gösterir.
Edward Olamisan

6
Webkit 'gizli' özelliğini desteklemiyor gibi görünüyor
Ethan Reesor

2
Kullanabilir miyim bölümünde belirtildiği gibi , hiddenözellik etkilidir display: none, bu nedenle eski tarayıcıları desteklemek için:<option selected disabled hidden style='display: none' value=''></option>
Neta

66

Sen ayarıyla can selectedIndexiçin -1kullanıyor .prop: http://jsfiddle.net/R9auG/ .

Daha eski jQuery sürümleri için şunu .attrkullanın .prop: http://jsfiddle.net/R9auG/71/ .


@IronicMuffin: Teşekkürler; sadece test edildi ve aslında tüm yaygın tarayıcılarda çalışıyor gibi görünüyor.
pimvdb

@zobidafly: Düzenlediğiniz için teşekkürler; Biraz detaylandırdım.
pimvdb

1
.attryeni jQuery sürümlerinde başarısız olur. Akıllı olmaya çalışmak beni başarısızlığa uğrattı.
Carson Ip

33

Sadece kullanarak

<option value="" selected disabled>Please select an option...</option>

komut dosyası olmadan her yerde çalışacak ve aynı zamanda kullanıcıya talimat vermenize izin verecektir.


25
<select>
     <option value="" style="display:none;"></option>
     <option value="0">aaaa</option>
     <option value="1">bbbb</option>
  </select>

1
ff / chrome - tamam, opera / ie7-9 - tamam değil, burada test edebilirsiniz (js ile veya js olmadan): jsfiddle.net/R9auG/145 bu yüzden @pimvdb tarafından js-yaklaşımını öneriyorum
tibalt

11

İşte bunu düz JavaScript kullanarak yapmanın basit bir yolu. Bu, pimvdb tarafından gönderilen jQuery betiğinin vanilya eşdeğeridir. Burada test edebilirsiniz .

<script type='text/javascript'>
  window.onload = function(){
    document.getElementById('id_here').selectedIndex = -1;
  }
</script>

.

<select id="id_here">
  <option>aaaa</option>
  <option>bbbb</option>
</select>

"İd_here" ifadesinin formda ve JavaScript'te eşleştiğinden emin olun.


3

Yapamazsın. Onlar sadece bu şekilde çalışmıyorlar. Açılır menünün seçeneklerinden biri her zaman seçilmiş olmalıdır.

(Bunu önermememe rağmen) bir değişiklik olayını izleyebilir ve ardından boşsa ilk seçeneği silmek için JS'yi kullanabilirsiniz.


3
Neden bu davranışı önermiyorsun?
Josh Noe

Kullanıcının bir listeden aktif olarak bir şeyler seçmesini istediğiniz birçok durum vardır. JS'nin bunu yapmanın en uygun yolu olduğunu sanmıyorum (tek yol gibi görünse de), ama gerçekten bir yolu olması gerektiğini düşünüyorum .
qwerty

2

Tamamen html için @isherwood'un harika bir çözümü var. JQuery için, seçim açılır listesine bir kimlik verin ve ardından jQuery ile seçin:

<form>
  <select id="myDropDown">
    <option value="0">aaaa</option>
    <option value="1">bbbb</option>
  </select>
</form> 

Ardından, sayfa yüklemedeki açılır listeyi temizlemek için bu jQuery'yi kullanın:

$(document).ready(function() {
    $('#myDropDown').val(''); 
});

Veya kendi başına bir işlevin içine koyun:

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

aradığınız şeyi başarır ve sayfayı yeniden yüklemeden açılır listeyi boşaltmanız gerekirse, bunu sayfanızda çağrılabilecek işlevlere koymak kolaydır.


0

Bu pasajı deneyebilirsiniz

$("#your-id")[0].selectedIndex = -1

Benim için çalıştı.


1
Daha net bir açıklama sağlamak için cevaba eşlik edecek bir jsfiddle.net sağlamak en iyisidir .
Anonim

1
Bu, OP'nin jQuery kullandığını varsayar.
evanrmurphy
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.