Form alanı form field
bilinen diğer adları girdi alanı · form kontrolü · text field · input field
Böyle diyorsan: "etiketli girdi" · "hata yazısı çıkan kutu" → bunun adı form alanı.
Etiket + girdi + hata/yardım satırından oluşan üçlü — formların yapı taşı.
Form alanı tek bir kutu değil, beş parçadan oluşan bir bütündür: etiket, zorunluluk işareti, ipucu (placeholder), yardım satırı ve hata satırı. Her parçanın kendi işaretlemesi vardır ve asıl mesele kozmetik değil BAĞLANTIDIR — etiket girdiye `for`/`id` ile, yardım ve hata satırı `aria-describedby` ile bağlanır. Bağlantı kurulmadığında alan gözle doğru görünür ama ekran okuyucu kullanan biri için kutunun adı yoktur. Yeni başlayanın en sık yaptığı hata da burada: etiketi silip yerine placeholder koymak.
Kapsam: Bu madde alanın YAPISINI ve bağlantılarını kapsar. Kutunun kendisinin türleri (metin, çok satırlı, seçim, tarih) ayrı maddelerdir; buradaki kurallar hepsinin üstünde geçerlidir.
Yapıştır, sonuna belirtiyi ekle — ajana klasik hata kalıplarını önden verir.
- 1Etiket
<label for>Girdinin adı; girdiye bağlanır — tıklayınca kutuyu odaklar, ekran okuyucu adıyla okur.
- 2Girdi
<input id>Verinin girildiği kutu; hata durumunda kenarlığı hata rengine döner.
- 3Hata / yardım satırı
aria-describedbyKutunun ALTINDA sabit yeri olan tek satır; hata yokken yardım metni taşıyabilir.
- 4Zorunlu işareti
required + *Etiketin yanındaki yıldız; görsel işaretin yanında doğrulama kuralı da tanımlanır.
- ABoş / varsayılan
:placeholder-shownHenüz yazılmamış hâl. Placeholder görünür ama etiket de görünür durumdadır — ikisi birbirinin yerine geçmez.
- BOdaklı
:focus-visibleKlavye ya da tıklamayla seçili hâl. Odak halkası kenarlıktan AÇIKÇA farklı olmalı; kaldırılamaz.
- CDolu
:not(:placeholder-shown)Kullanıcı yazdı. Bu hâlde placeholder kaybolur, o yüzden orada duran bilgi kalıcı olamaz.
- DGeçersiz
aria-invalid + :user-invalidHata var. `:user-invalid` kullanıcı alandan çıktıktan SONRA tetiklenir — yazarken bağırmamanın standart yolu budur.
- EDevre dışı / salt okunur
disabled, readonlyİkisi aynı şey değil: `disabled` alan gönderilmez ve odaklanılamaz, `readonly` gönderilir ve odaklanılabilir.
| HTML | <label for> + <input id> | etiket-girdi bağı |
| HTML | required, type="email" | yerleşik doğrulama |
| ARIA | aria-describedby | hata satırını girdiye bağlar |
| ARIA | aria-invalid="true" | geçersiz durumu ekran okuyucuya bildirir |
| CSS | :user-invalid | yalnız kullanıcı ETKİLEŞTİKTEN sonra hata stili |
| CSS | ::placeholder | ipucu metninin stili — etiketin yerine geçmez |
- Etiket GERÇEK bir <label> olmalı ve for/id eşleşmeli. Görsel olarak etiket gibi duran bir <div>, ekran okuyucu için etiket değildir.
- Placeholder etiketin yerine geçemez: kullanıcı yazmaya başlayınca kaybolur ve alanın ne olduğu bilgisi uçar. Placeholder yalnızca ÖRNEK verir.
- Hata ve yardım metnini aria-describedby ile girdiye bağla; bağlanmayan hata metni ekran okuyucuda hiç okunmaz — kullanıcı neyi düzelteceğini bilemez.
- Hata satırının yerini önceden ayır. Hata belirince yerleşim zıplarsa kullanıcı tıklamak üzere olduğu şeyi kaçırır.
- Zorunluluğu yalnız yıldızla anlatma: görsel yıldızın yanında girdide `required` da bulunsun, yoksa işaret sadece süs olur.
Metin kutusundan farkı. Metin kutusu <input>'un KENDİSİDİR; form alanı ise o kutunun etiketi, yardım satırı, hata satırı ve zorunluluk işaretiyle birlikte oluşturduğu bütündür. 'Metin kutusu ekledim' demek, alanın yarısını yaptım demektir — ekran okuyucu için asıl iş bağlantılarda.
Uyarı şeridinden farkı. Form alanının hata satırı O ALANA aittir ve girdiye aria-describedby ile bağlıdır. Uyarı şeridi ise sayfaya ya da forma bütün olarak seslenir. Alan bazlı hatayı sayfa üstünde tek bir şeride toplarsan kullanıcı hangi alanı düzelteceğini aramak zorunda kalır.
- birincilWHATWG HTML — Forms bölümü ↗
Alanın davranışını tanımlayan standardın kendisi: hangi öğe ne yapar, doğrulama nasıl işler.
- standartMDN — <label> elementi ↗
for/id bağının nasıl kurulduğu ve neden gerektiği.
- standartMDN — :user-invalid ↗
Kullanıcı alandan çıkmadan hata basmamanın standart yolu; tarayıcı desteği burada.
- standartW3C — WCAG 2.2, Labels or Instructions (3.3.2) ↗
Girdi gerektiren her alanın etiket ya da yönerge taşıması şartı.
Tam sayfa örneğini aç →üstteki şeritten stil atlayabilirsin
Metin kutusu inputOnay kutusu checkboxSeçim kutusu selectUyarı şeridi alert / banner