Menu

HTML Açılır Liste: select, option, optgroup ve multiple

HTML'de <select> ve <option> ile açılır liste yapma: değerler, varsayılan ya da placeholder seçenek, required, seçenek grupları, çoklu seçim, değeri JavaScript'te okuma ve ayarlama, oka stil verme.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

HTML'de açılır liste nasıl yapılır

Açılır liste, her seçenek için bir <option> içeren bir <select> elementidir. Her seçeneğin value değeri formun gönderdiği şeydir; etiketlerin arasındaki metin de okurun gördüğü şeydir. Birini seç ve Submit'e bas:

Form language=js gönderir: select'in name değeri ve seçilen seçeneğin value değeri. selected varsayılanı belirler; o olmadan ilk seçenek seçilir. Bir seçeneğin value değeri yoksa onun yerine metni gönderilir.

Label'ı select'e for ve id ile (ya da onu sararak) bağla, böylece label'a tıklamak açılır listeye odaklanır ve ekran okuyucular onu duyurur.

select ve option özellikleri

ElementÖzellikNe yapar
<select>nameDeğerin gönderildiği anahtar
<select>requiredBoş ilk placeholder seçeneği değil, gerçek bir seçenek seçilmeli
<select>multipleBirkaç seçenek seçilebilir
<select>sizeKaç satırın görünür olduğu (onu bir liste kutusuna çevirir)
<select>disabledBütün açılır liste kapalıdır ve gönderilmez
<option>valueSeçildiğinde gönderilen şey
<option>selectedSayfa yüklendiğinde seçili
<option>disabledGösterilir ama seçilemez
<optgroup>labelGrubun başlığı

required ile bir placeholder seçeneği

Bir select'in her zaman bir değeri vardır, bu yüzden placeholder olmadan okur açılır listeye hiç dokunmasa bile ilk gerçek seçenek gönderilir. Boş bir ilk seçenek bunu çözer, required de gerçek bir seçenek seçilene kadar gönderimi durdurur:

Seçim yapmadan Continue'ya bas: tarayıcı reddeder ve bir öğe seçmeni ister. Placeholder'ın değeri required tarafından boş kabul edilen value="" olur; bir ülke seçildikten sonra yeniden seçilemesin diye de disabled durumundadır.

optgroup ile seçenekleri gruplamak

<optgroup label="..."> bir seçenek setinin üstüne bir başlık koyar. Başlık seçilemez:

Gruplar iç içe yazılamaz: bir liste tek seviye başlık alır, daha fazlasını değil. Bir <optgroup> üzerindeki disabled içindeki her seçeneği devre dışı bırakır.

Çoklu seçim

multiple okurun birkaç seçenek seçmesine izin verir ve açılır listeyi bir liste kutusuna çevirir. Seçenekleri tek tek eklemek için Ctrl'ye (Mac'te Cmd), bir aralık seçmek için Shift'e basılı tut:

Form skills=html ve skills=css gönderir: seçilen her seçenek için bir kez aynı ad. Birçok kişi Ctrl+tık hareketini bilmez, bu yüzden birkaç seçenek için bir checkbox grubunu kullanmak daha kolaydır.

Değeri JavaScript'te okumak ve ayarlamak

select.value seçili seçeneğin değerini okur ve ayarlar, change olayı da okur farklı bir seçenek seçtiğinde tetiklenir. Yaygın bir kullanım, seçenekleri ilkine bağlı olan ikinci bir açılır listedir:

new Option(text, value) bir seçenek oluşturur. select.selectedIndex seçili seçeneğin konumudur, select.selectedOptions de seçili olanları listeler; çoklu bir select'i böyle okursun.

Bir select'e stil vermek

Açılır listenin açık hâlini tarayıcı ve işletim sistemi çizer ve bunun çok azına stil verilebilir. Kapalı kutuya verilebilir: appearance: none yerel oku kaldırır, bir arka plan resmi de onun yerine seninkini koyar:

Fazladan son padding, uzun seçenek metni okun altına girmesin diye ok için yer bırakır. font: inherit burada da butonlardaki kadar önemlidir: select'ler varsayılan olarak tarayıcının küçük form yazı tipini kullanır. Açık listedeki seçenekler yerel görünümü korur. Chrome, appearance: base-select ile tercih ettiğinde açık listeye de stil verebilir; bunu desteklemeyen tarayıcılar yerel listeyi gösterir. Her yerde tam kontrol, ARIA ile yapılmış özel bir bileşen gerektirir; bunu doğru yapmak göründüğünden çok daha fazla iştir.

select, radio butonlar mı yoksa datalist mi?

KullanNe zaman
<select>Uzun bir listeden tek seçim ya da yerin dar olduğu durumlar
Radio butonlarHepsi görünür olması gereken birkaç seçenekten tek seçim (bkz. HTML radio buton)
<datalist> ile <input>Öneriler, ama yazılan her değere izin verilir

Sık yapılan hatalar

  • Zorunlu bir seçimde placeholder olmaması. Okur hiç seçmemiş olsa bile ilk gerçek seçenek gönderilir.
  • value="none" gibi gerçek bir değeri olan bir placeholder. required onu geçerli bir seçim olarak ele alır. value="" kullan.
  • Metin uzun ya da çevrilmiş olduğunda value olmayan seçenekler. Sunucu, dile göre değişen görünen metni alır.
  • Birkaç seçenek için multiple. Checkbox'ları kullanmak daha kolaydır.
  • Seçeneklerde click dinlemek. <select> üzerinde change kullan; klavyeyle yapılan değişikliklerde de tetiklenir.
  • Label olmaması. Yalnızca placeholder'ı olan bir select, bir seçenek seçildikten sonra adsız kalır.

Sıkça Sorulan Sorular

HTML'de açılır liste nasıl yapılır?

Her seçenek için bir <option> ile <select> kullan: <select name="color"><option value="red">Red</option><option value="blue">Blue</option></select>. Select'e bir name ve bir <label> ver.

Bir select'te varsayılan seçenek nasıl ayarlanır?

O seçeneğe selected ekle: <option value="blue" selected>Blue</option>. O olmadan ilk seçenek seçilir. JavaScript'te select.value = 'blue' ata.

Bir select'e placeholder nasıl eklenir?

İlk seçeneği boş ve seçilemez yap: <option value="" disabled selected>Choose a country</option>. Gerçek bir seçenek seçilene kadar form gönderilemesin diye <select> elementine required ekle.

JavaScript'te bir select'in seçili değerini nasıl alırım?

select.value seçili seçeneğin değeridir. Görünen metni için select.selectedOptions[0].text kullan, seçim değiştiğinde tepki vermek için de change olayını dinle. Çoklu bir select için select.selectedOptions üzerinde map kullan.

select ile datalist arasındaki fark nedir?

Bir <select> yalnızca listelenen seçeneklere izin verir. <datalist> olan bir <input> ise okur yazarken seçenek önerir ama her metni kabul eder. Cevap senin seçeneklerinden biri olmak zorundaysa select kullan.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA