Menu

HTML Radio Buton: Gruplar, Varsayılan Seçim ve Stil Verme

HTML'de radio butonlar nasıl çalışır: name özelliğiyle gruplama, checked ile varsayılan seçim, zorunlu gruplar, seçilen değeri JavaScript'te okuma, klavye davranışı ve onlara özel daireler ya da kartlar olarak stil verme.

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

HTML'de radio buton nasıl yapılır

Radio butonlar okurun bir gruptan tam olarak bir seçenek seçmesini sağlar. Her seçenek bir <input type="radio"> elementidir ve onları bir grup yapan şey aynı name değerini almalarıdır. Bir beden seç ve Order'a bas:

Form tek bir çift gönderir, size=m: grubun name değeri ve seçilen butonun value değeri. Parçalar:

  • Gruptaki her butonda aynı name değeri. Birini seçmek diğerlerinin seçimini kaldırır.
  • Her birinde farklı bir value değeri. Sunucunun aldığı budur. value olmayan bir radio on gönderir, bu da sunucuya hiçbir şey söylemez.
  • Varsayılan seçenekte checked.
  • Metin tıklanabilir olsun diye her birinin çevresinde bir <label>, ekran okuyucular soruyu ("Size") her seçenekle birlikte duyursun diye de bir <legend> ile <fieldset>.

Grubu name oluşturur

Farklı adlara sahip radio'lar ayrı gruplardır ve her grubun kendi seçimi vardır. Bu örnekte iki grup ve her radio'nun yanlışlıkla kendi adını aldığı bozuk bir set var:

Bozuk gruptaki üçüne de tıkla: hepsi seçili kalır ve hiçbiri yeniden kapatılamaz; iki dünyanın en kötüsü. Radio'lar aynı form içinde name ile gruplanır, bu yüzden iki formun her birinin kendi name="size" grubu olabilir.

Zorunlu gruplar ve varsayılan olmaması

Gruptaki herhangi bir radio üzerindeki required, form gönderilmeden önce birinin seçilmesi gerektiği anlamına gelir. checked kullanmamak okuru aktif olarak seçim yapmaya zorlar; mantıklı bir varsayılan olmadığında doğrusu budur:

Seçim yapmadan Continue'ya bas, tarayıcı gönderimi bir mesajla durdurur. Herhangi bir seçenek seçildiğinde bütün grup geçerli olur. Zorunlu olmayan ve seçim yapılmamış bir grup, işaretlenmemiş bir checkbox gibi hiçbir şey göndermez.

Bir tıklama bir radio'yu seçebilir ama seçimini asla kaldıramaz. Bir seçim yapıldıktan sonra "cevap yok" mümkün olmalıysa, bunun için açık bir seçenek ekle.

Seçilen değeri JavaScript'te okumak

form.elements.name bütün grubu döndürür ve .value değeri seçili radio'nun değeridir (hiçbiri seçili değilse boş bir string). change olayı seçili hâle gelen radio üzerinde tetiklenir:

Dinleyici formun üzerinde olduğu için herhangi bir alanındaki değişikliği yakalar. Form dışında seçili radio'yu document.querySelector('input[name="period"]:checked') ile bul.

Klavye davranışı

Bir radio grubu Tab sırasında tek bir duraktır. Tab gruba girer ve seçili radio'ya (hiçbiri seçili değilse ilkine) düşer, ok tuşları da seçimi seçenekler arasında taşır. Tab'a yeniden basmak gruptan çıkar. Bu, aynı name değerini paylaşan gerçek radio input'larında hiçbir ek iş olmadan gelir; radio'ları <div> elementlerinden yeniden kurmamak için bir neden daha.

Radio butonlara stil vermek

accent-color yerel radio'yu yeniden renklendirir. appearance: none kendi daireni çizmeni sağlar. Gizli bir radio label'ı üzerinden yine de seçilebildiği için, bir grup tüm radio davranışını korurken bir kart seti gibi görünebilir:

Özel daire, işaretliyken yalnızca kalın bir kenarlıktır. Kartlar input'u display: none yerine opacity: 0 ile gizler, böylece input odaklanabilir kalır ve ok tuşları çalışmaya devam eder; :has(input:checked) da seçili karta stil verir. :has() güncel Chrome, Firefox ve Safari'de çalışır.

Radio, checkbox mu yoksa select mi?

KullanNe zaman
Radio butonlarHepsi görünür olması gereken birkaç seçenekten (yaklaşık 2 ile 6 arası) tek seçim
Checkbox'larHiç seçim dahil istenen sayıda seçim
Bir <select>Ülkeler gibi uzun bir listeden tek seçim (bkz. HTML açılır liste)

Sık yapılan hatalar

  • Tek bir grupta farklı name değerleri. Her radio seçilebilir ve hiçbiri temizlenemez.
  • value olmaması. Sunucu ne seçilirse seçilsin on alır.
  • Özel bir tasarımda input'u display: none ile gizlemek. Artık odaklanamaz ya da klavyeyle kullanılamaz.
  • <fieldset> ve <legend> olmaması. Ekran okuyucular yanında hiçbir soru olmadan "Small, radio button" duyurur.
  • "Kabul ediyorum" kutusu için tek bir radio buton. İşareti asla kaldırılamaz; bir checkbox kullan.
  • Bir grubun birkaç radio'sunda checked. Yalnızca sonuncusu seçili kalır.

Sıkça Sorulan Sorular

HTML'de radio buton nasıl yapılır?

Her seçenek için bir <input type="radio"> yaz, hepsine aynı name ve farklı bir value ver ve her birini bir <label> içine koy: <label><input type="radio" name="size" value="m"> Medium</label>. Ortak ad onları yalnızca birinin seçilebildiği tek bir grup yapar.

Neden birden fazla radio buton seçebiliyorum?

Butonlar aynı name değerini paylaşmıyor. Radio butonlar yalnızca (aynı formda) birebir aynı name ile grup oluşturur ve her grupta yalnızca bir buton seçilebilir.

JavaScript'te seçilen radio butonun değerini nasıl alırım?

size grubun adı olmak üzere form.elements.size.value kullan; seçilen butonun değerini, hiçbiri seçili değilse boş bir string döndürür. Form olmadan: document.querySelector('input[name="size"]:checked')?.value.

Varsayılan bir radio buton nasıl ayarlanır?

Gruptaki bir butona checked ekle: <input type="radio" name="plan" value="free" checked>. Birkaç tanesinde varsa sonuncusu kazanır.

Bir radio butonun seçimi kaldırılabilir mi?

Ona tıklayarak kaldırılamaz; tıklama yalnızca seçer. Bir "Hiçbiri" seçeneği sun, formu sıfırla ya da JavaScript'te button.checked = false ata. Seçim isteğe bağlı ve kaldırılabilir olmalıysa bir checkbox ya da select daha uygun olabilir.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA