Onay kutusu checkbox
bilinen diğer adları checkbox · işaret kutusu · tik kutusu
Böyle diyorsan: "tik atılan kare" · "kabul ediyorum kutusu" → bunun adı onay kutusu.
İşaretlenip kaldırılabilen kare; birden çok seçime izin verir.
Onay kutusu bağımsız bir evet/hayır seçimidir: yanındakilerle ilişkisi yoktur, birden çoğu aynı anda işaretlenebilir. Anahtardan farkı görünüş değil ZAMANLAMADIR — onay kutusu bir NİYET bildirir ve etkisi form gönderilince doğar; anahtar ise anında etkili bir sistem durumudur. Üçüncü bir hâli daha vardır ve sık atlanır: kısmen işaretli (indeterminate), yani 'tümünü seç' başlığı altındaki seçeneklerin bir kısmı seçiliyken görünen ara durum. İşaretlemeyi geri alabilirsin — bu, seçenek düğmesinden ayrıldığı önemli bir noktadır.
Kapsam: Bu madde bağımsız çoklu seçimi kapsar. Gruptan yalnız bir tane seçtiren yuvarlak düğme Seçenek Düğmesi maddesinde, anında etkili aç/kapa ise Anahtar maddesindedir.
Yapıştır, sonuna belirtiyi ekle — ajana klasik hata kalıplarını önden verir.
- 1Kutu
<input type=checkbox>Gerçek checkbox elementi; div'le taklit edilirse klavye ve okuyucu desteği sıfırlanır.
- 2Etiket
<label> bağlıMetne tıklamak da kutuyu işaretler — tıklama alanını 10 kat büyütür.
- 3Grup başlığı
fieldset/legendİlişkili onaylar tek grup altında; 'tümünü seç' varsa ara-durum (indeterminate) gerekir.
- 4Zorunlu-onay bağı
disabled butonKVKK gibi onaylar gönder butonunu yönetir; ama SUNUCU da ayrıca doğrular — client aldatılabilir.
- Aİşaretsiz
checked=falseVarsayılan hâl. Zorunlu onaylarda (KVKK gibi) önceden işaretli GELMEMELİ — kullanıcının eylemi olmadan verilmiş onay, onay değildir.
- Bİşaretli
checkedKullanıcı seçti. Geri alınabilir; kaldırmak da tek tıktır — seçenek düğmesinden ayrıldığı yer burasıdır.
- CKısmen işaretli
el.indeterminate = trueYalnız JS ile kurulur, HTML özniteliği yoktur. 'Tümünü seç' başlığında alt öğelerin bir kısmı seçiliyken kullanılır; görsel çizgi tek başına yetmez, aria-checked="mixed" de gerekir.
- DOdaklı
:focus-visibleKlavyeyle gezilirken. Space tuşu işaretler; div ile taklit edilmiş kutuda bu davranış kendiliğinden gelmez.
- EDevre dışı
disabledSeçilemez ve form gönderiminde YER ALMAZ. Bir onayın neden kapalı olduğunu yazmazsan kullanıcı arayüzün bozuk olduğunu düşünür.
| HTML | <input type=checkbox> + <label> | gerçek element + büyük tıklama alanı |
| JS | el.indeterminate = true | tümünü-seç ara durumu |
| ARIA | aria-checked="mixed" | ara durumu okuyucuya bildirir |
| HTML | <fieldset> + <legend> | ilişkili onayları gruplar |
| Güvenlik | sunucu tarafı doğrulama | client aldatılabilir |
- Gerçek <input type="checkbox"> kullan. Div ve ikonla yapılmış taklit, klavye desteğini ve ekran okuyucu bildirimini sıfırdan yazmanı gerektirir — çoğu proje bunu eksik yazar.
- Etiketi <label> ile bağla: metne tıklamak da kutuyu işaretler ve tıklama alanı on kat büyür. Küçük kareyi tutturmaya çalışmak özellikle dokunmatikte kullanılabilirlik sorunudur.
- İlişkili onayları <fieldset> + <legend> ile grupla; ekran okuyucu her seçeneği sorunun bağlamıyla birlikte okur (WCAG 1.3.1).
- Ara durumu yalnız görsel çizgiyle anlatma: aria-checked="mixed" olmadan ekran okuyucu 'kısmen seçili' diyemez, ya seçili ya değil der.
- Zorunlu onayı SUNUCUDA da doğrula. Butonun disabled olması bir güvenlik önlemi değildir; tarayıcı araçlarıyla açılabilir.
Anahtardan farkı. Ayrım görünüşte değil ZAMANLAMADA. Onay kutusu bir niyet bildirir ve etkisi form gönderilince doğar; anahtar ise dokunulduğu anda sistem durumunu değiştirir ve Kaydet butonu beklemez. Pratik test: kullanıcı bunu işaretledikten sonra 'Kaydet'e basacaksa onay kutusudur; basmayacaksa anahtar.
Seçenek düğmesinden farkı. Onay kutuları BAĞIMSIZDIR: sıfır, bir ya da hepsi seçilebilir ve her biri tek başına geri alınabilir. Seçenek düğmeleri ise bir GRUP oluşturur ve gruptan yalnız biri seçilir. Kritik sonuç: bir seçenek düğmesini seçtikten sonra kod yazmadan 'hiçbiri' hâline dönemezsin; onay kutusunda ise kaldırmak tek tıktır.
- birincilW3C — ARIA APG, Checkbox kalıbı ↗
Resmi kalıp: klavye davranışı ve ara (mixed) durumun nasıl bildirileceği burada tanımlı.
- standartMDN — input type="checkbox" ↗
Yerleşik davranış ve indeterminate'in yalnız JS ile kurulduğu bilgisi.
- standartMDN — <fieldset> ↗
İlişkili onayları gruplamanın standart yolu.
- standartW3C — WCAG 2.2, Info and Relationships (1.3.1) ↗
Görsel gruplamanın koda da yansıması şartı.
Anahtar switch / toggleSeçenek düğmesi radioForm alanı form fieldEtiket chip / tag