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ı
namedeğeri. Birini seçmek diğerlerinin seçimini kaldırır. - Her birinde farklı bir
valuedeğeri. Sunucunun aldığı budur.valueolmayan bir radioongö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?
| Kullan | Ne zaman |
|---|---|
| Radio butonlar | Hepsi görünür olması gereken birkaç seçenekten (yaklaşık 2 ile 6 arası) tek seçim |
| Checkbox'lar | Hiç 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ı
namedeğerleri. Her radio seçilebilir ve hiçbiri temizlenemez. valueolmaması. Sunucu ne seçilirse seçilsinonalır.- Özel bir tasarımda input'u
display: noneile 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.