
HTML formları kullanıcıdan veri almak için en sık kullanılan araçlardır. Doğru yapılandırılmış formlar daha iyi kullanıcı deneyimi, daha az giriş hatası ve geliştirilmiş erişilebilirlik sağlar. HTML5’in yerleşik doğrulama özellikleri hızlı geri bildirim verirken, ARIA öznitelikleri ekran okuyucu kullanan kişiler için erişimi iyileştirir. Bu yazıda adım adım kolay kod örnekleri ile input, label ve validation pratiklerini göreceksiniz (kaynaklar: MDN - Form validation, W3Schools - Formlar ve doğrulama).
Label etiketinin input ile doğru eşlenmesi, hem tıklanabilir alanı genişletir hem de ekran okuyuculara alanın ne amaçla olduğunu açıklar. İki yaygın yöntem vardır:
Bu yöntem genellikle tercih edilir çünkü input ve label farklı yerlerde olabilir:
Örnek:
<form action="/submit" method="post">
<label for="name">Adınız</label>
<input type="text" id="name" name="name" required minlength="2" placeholder="Ahmet" />
<button type="submit">Gönder</button>
</form>
Label, input’u sarmalayarak da eşlenebilir. Küçük formlar için kısa bir yöntemdir:
<label>E-posta: <input type="email" name="email" required /></label>
Her iki yöntem de erişilebilirlik açısından iyidir; önemli olan her input için uygun bir label olmasıdır. Placeholder metinleri elverişli olsa da, placeholder’ı tek başına etiket yerine kullanmayın—placeholder yardımcı bilgi içindir, etiketi değiştirmez.
HTML5, form doğrulama için birçok yerleşik öznitelik sunar: required, type (ör. email, number), min, max, step, minlength, maxlength, pattern ve title. Tarayıcılar bu özniteliklere göre otomatik geri bildirim sağlar (ayrıntılar için bkz. MDN).
Form:
<form action="/signup" method="post">
<label for="email">E-posta</label>
<input type="email" id="email" name="email" required placeholder="[email protected]" />
<label for="age">Yaş</label>
<input type="number" id="age" name="age" min="18" max="120" />
<label for="password">Parola</label>
<input type="password" id="password" name="password" required minlength="8" />
<button type="submit">Kayıt Ol</button>
</form>
pattern özniteliği basit düzenli ifadelerle (regex) girişleri kısıtlar. Örneğin 5 haneli posta kodu:
<input type="text" name="zip" pattern="[0-9]{5}" title="5 haneli posta kodu" />
Tarayıcı doğrulaması hızlı geri bildirim sağlar ancak tek başına güvenlik için yeterli değildir; her zaman sunucu tarafında da doğrulama yapın (bkz. MDN referansı).
ARIA öznitelikleri ekran okuyucu etkileşimini iyileştirir. Yaygın kullanılanlar:
aria-invalid="true").Örnek (metin olarak gösterim):
<label for="email">E-posta</label>
<input type="email" id="email" name="email" aria-describedby="emailHelp" required />
<p id="emailHelp" aria-live="polite">Lütfen geçerli bir e-posta girin.</p>
Not: Yukarıdaki örnek id/aria ilişkisini göstermek için metin halinde verilmiştir. Dinamik hata mesajı güncellemeleri yaparken aria-live veya role="alert" kullanmak, ekran okuyucuların değişiklikleri bildirmesini sağlar (kaynak: W3Schools - erişilebilirlik).
Form doğrulama için önerilen adımlar:
required, type, pattern).Bu akış, hem kullanıcı deneyimini iyileştirir hem de veri kalitesini artırır. MDN dokümanları bu yaklaşımı destekler (bkz. MDN).
inputmode="numeric" gibi öznitelikler ekleyin.Aşağıdaki metin form örneği, gerçek HTML formatında sunulmuştur ve kolay kod örnekleri olarak kopyalanabilir:
<form action="/submit" method="post">
<label for="fullName">Ad Soyad</label>
<input type="text" id="fullName" name="fullName" required minlength="2" />
<label for="email">E-posta</label>
<input type="email" id="email" name="email" required aria-describedby="emailHelp" />
<p id="emailHelp" aria-live="polite">Örnek: [email protected]</p>
<label for="phone">Telefon</label>
<input type="tel" id="phone" name="phone" inputmode="tel" pattern="[0-9\-\s]{7,15}" title="Telefon numarası" />
<label for="age">Yaş</label>
<input type="number" id="age" name="age" min="18" max="120" />
<button type="submit">Gönder</button>
</form>
label kullanılıyor mu?inputmode ya da uygun type kullanıldı mı?Bu rehberin temel fikirleri ve örnekleri MDN ve W3Schools dokümanlarından alınmıştır. Daha derin teknik detay ve tarayıcı davranışları için şu sayfaları inceleyin:
Soru: HTML5 doğrulaması yeterli mi?
Cevap: HTML5 doğrulaması kullanıcı deneyimini artırır ve birçok basit hatayı önler; ancak sunucu tarafında da mutlaka doğrulama yapılmalıdır. İstemci doğrulaması kullanıcıyı hızlı bilgilendirirken, sunucudaki kontroller güvenlik ve veri bütünlüğü için gereklidir (bkz. MDN).
Soru: Label yerine placeholder kullanabilir miyim?
Cevap: Hayır. Placeholder yardımcı bilgi sağlar ama etiketin yerini almaz. Placeholder kaybolduğunda kullanıcı hangi alanın ne için olduğunu unutabilir.
Soru: ARIA her zaman gerekli mi?
Cevap: ARIA yalnızca gerekli olduğunda ve uygun şekilde kullanılmalıdır. Semantik HTML (label, fieldset, legend) önceliklidir; ARIA ise eksik semantik veya dinamik durumlar için destek sağlar (bkz. W3Schools erişilebilirlik rehberi).
Yorumlar