HTML'de checkbox nasıl yapılır
Checkbox bir <input type="checkbox"> elementidir. Metni tıklamak da onu işaretlesin diye onu metniyle birlikte bir <label> içine koy. Kutulardan birini ya da ikisini işaretle ve formun ne gönderdiğini görmek için Save'e bas:
Varsayılan durumda form yalnızca updates=on gönderir. İki kural bunu açıklar:
- İşaretli bir kutu
name=valuegönderir. İkinci kutununvaluedeğeri yoktur, bu yüzden varsayılanı, yaniongönderir. - İşaretlenmemiş bir kutu hiçbir şey göndermez. Ne
newsletter=none de boş bir değer: ad veride hiç yoktur.
HTML'deki checked başlangıç durumunu belirler. Her boolean özellik gibi önemli olan var olmasıdır: checked="false" kutuyu yine de işaretler.
Checkbox özellikleri
| Özellik | Ne yapar |
|---|---|
name | İşaretliyken gönderilen anahtar |
value | İşaretliyken gönderilen şey (varsayılan on) |
checked | Sayfa yüklendiğinde işaretli |
required | Bu kutu işaretlenene kadar form gönderilmez |
disabled | Değiştirilemez ve gönderilmez |
Bir checkbox grubu
"Bunlardan istediklerini seç" için her kutuya aynı name ve farklı bir value ver. Grubun bir adı olsun diye onları bir <legend> ile birlikte bir <fieldset> içine sar:
Form topic=html ve topic=css gönderir: aynı ad iki kez. Çoğu sunucu framework'ü bunu bir liste olarak okuyabilir. İstisna PHP'dir: ad köşeli parantezle, yani name="topic[]" ile bitmedikçe yalnızca sonuncuyu tutar. JavaScript'te new FormData(form).getAll('topic'), ['html', 'css'] döndürür.
Kutu işaretsizken bir değer göndermek
Sunucunun açık bir "hayır" değerine ihtiyacı olduğunda, checkbox'tan önce aynı adı taşıyan gizli bir input koy. İşaretsizken yalnızca gizli değer gönderilir; işaretliyken ikisi de gönderilir ve sunucu sonuncuyu alır:
Continue'ya bas: terms kutusu işaretlenene kadar form reddeder, çünkü o required durumundadır. Sonra marketing=no ve terms=accepted gönderir; ilk kutu işaretliyse de marketing=no, marketing=yes ve terms=accepted gönderir. Rails gibi framework'ler tam olarak bu gizli input çiftini üretir. Buna güvenmeden önce sunucunun tekrarlanan bir adı nasıl okuduğunu kontrol et.
Tümünü seç ve indeterminate durumu
Bir checkbox'ın "bazıları ama hepsi değil" için üçüncü bir görünümü, bir çizgisi vardır. Yalnızca JavaScript'te vardır: box.indeterminate = true ata. Bir "tümünü seç" kutusu, kontrol ettiği kutuların bazıları işaretli olduğunda bunu kullanır:
indeterminate yalnızca görünümü (ve ekran okuyucuların duyurduğunu: "mixed" ya da "partially checked") değiştirir. Kutu altta yine ya işaretli ya da işaretsizdir ve form da bunu gönderir. Indeterminate bir kutuya tıklamak çizgiyi temizler ve onu değiştirir.
Bir checkbox'a tepki vermek için change olayını kullan, durumu için de box.checked değerini oku. Kutu işaretlendiğinde box.value değişmez.
Checkbox'lara stil vermek
En hızlı değişiklik, yerel checkbox'ı yeniden renklendiren ve tüm davranışını koruyan accent-color özelliğidir. Tamamen farklı bir görünüm için appearance: none yerel çizimi kaldırır ve input'a herhangi bir kutu gibi stil vermeni sağlar:
Özel kutu hâlâ gerçek bir checkbox'tır: tıklamayla ve Space ile değişir, formla gönderilir ve checkbox olarak duyurulur. Onu :checked ile çiz ve bir :focus-visible stili bırak, çünkü yerel çizim olmadan kendin eklemediğin hiçbir odak halkası yoktur.
Bir toggle switch
Switch, "bunu dahil et" yerine "şu anda açık/kapalı" anlamına gelen bir checkbox'tır. Onu appearance: none ile çiz ve ekran okuyucular işaretli bir checkbox yerine açık ya da kapalı bir switch duyursun diye role="switch" ekle:
inset-inline-start düğmeyi satırın başından konumlandırır, böylece switch sağdan sola yazılan sayfalarda olması gerektiği gibi diğer yöne kayar. Yalnızca birinin seçilebildiği gruplanmış evet/hayır seçimleri için HTML radio buton sayfasına bak.
Sık yapılan hatalar
- İşaretsiz bir kutu için
falsebeklemek. Hiçbir şey gönderilmez. Sunucuda eksik bir adı "kapalı" olarak ele al ya da gizli input'u ekle. checked="false". Kutuyu yine de işaretler. Özelliği kaldır.- Label'ı olmayan bir checkbox ya da yanındaki metin
<label>değil. Küçük kutu tek tıklama hedefi olur ve ekran okuyucular adsız bir "checkbox" duyurur. Bkz. HTML label. valuedeğerini unutmak, bu durumda bir gruptaki her kutuongönderir ve sunucu onları ayırt edemez.- İşaretli olup olmadığını görmek için
box.valueokumak.box.checkedkullan. - "Birini seç" için checkbox'lar. Radio butonlar bunun içindir.
Sıkça Sorulan Sorular
HTML'de checkbox nasıl yapılır?
Bir label içinde <input type="checkbox"> kullan: <label><input type="checkbox" name="terms" value="yes"> I agree</label>. Label metni de tıklanabilir yapar.
Bir checkbox'ı varsayılan olarak nasıl işaretli yaparım?
checked özelliğini ekle: <input type="checkbox" name="news" checked>. Önemli olan var olmasıdır, bu yüzden checked="false" de onu işaretler. JavaScript'te box.checked = true ya da false ata.
İşaretlenmemiş bir checkbox hangi değeri gönderir?
Hiçbirini. İşaretlenmemiş bir checkbox gönderilen veriden tamamen çıkarılır. İşaretli olan kendi value değerini, value yoksa da on gönderir. Sunucunun açık bir "hayır" değerine ihtiyacı varsa, checkbox'tan önce aynı adı taşıyan gizli bir input koy.
JavaScript'te bir checkbox'ın değerini nasıl alırım?
true ya da false olan box.checked değerini oku. box.value göndereceği değerdir ve kutu işaretli olsun ya da olmasın aynı kalır. İşaretlendiğinde tepki vermek için change olayını dinle.
Bir checkbox'ın rengini nasıl değiştiririm?
Ona accent-color ver: input[type=checkbox] { accent-color: #16a34a; }. Tamamen özel bir görünüm için appearance: none ayarla ve kutuyu ve onay işaretini CSS ile kendin çiz.