HTML form doğrulamasının düşük kullanım oranı
- HTML formları güçlü bir doğrulama mekanizmasına sahip, ancak çok fazla kullanılmıyor. Birçok kişi bunun farkında değil. Bunun nedeni tasarımdaki kusurlar olabilir.
Öznitelikler, metotlar ve özellikler
- Boş girişi önlemek için
required özniteliği eklenebilir.
- Girdiye kısıt eklemenin üç yolu vardır:
- Belirli
type öznitelik değerlerini kullanmak: "email", "number", "url"
"pattern" veya "maxlength" gibi diğer girdi özniteliklerini kullanmak
setCustomValidity DOM metodunu kullanmak: özel doğrulama mantığı oluşturabilen ve karmaşık durumları ele alabilen en güçlü yöntemdir.
Buyurgan API'nin incelikleri
setCustomValidity API'si yalnızca metot olarak sunulduğu için kullanımı elverişsizdir.
- Örneğin, girdi boş olduğunda form gönderimini engellemek için
required özniteliğiyle aynı işlev uygulanabilir.
- İlk render sırasında girdi boşsa geçersiz olarak ayarlanması gerekir.
Boilerplate sorunu
- İlk değeri doğrulama yöntemi zahmetlidir.
- Doğrulama mantığı
onChange işleyicisinde ve ilk render aşamasında tekrar eder.
useRef + useLayoutEffect + onChange birleşimi karmaşıktır.
Eksik olan parça
custom-validity özniteliğine ihtiyaç vardır.
- Bildirimsel framework'lerde girdi doğrulaması güçlü biçimde tanımlanabilir.
Asenkron doğrulamanın gücü
- Kullanıcı adı girdisinin yalnızca kullanılmıyorsa geçerli olması gereken durumlar ele alınabilir.
- Sunucuya asenkron çağrı ve bir ara durum gerekir.
Uygulama
verifyUsername fonksiyonu kullanıcı adının benzersizliğini kontrol etmek için kullanılır.
useQuery ile sunucu isteğinin durumu yönetilir.
customValidity özniteliği ile asenkron doğrulama akışı açıklanır.
Şifre doğrulama formu
- Girilen şifrenin tekrar yazılması gereken bir form uygulanır.
- Doğrulama, iki giriş alanının eşleşip eşleşmediği kontrol edilerek yapılır.
Sonuç
setCustomValidity, çeşitli doğrulama gereksinimlerini karşılayabilir.
- Güçlü bir API asıl gücü sağlar.
- Bu özelliğin HTML spesifikasyonuna eklenmesi umuluyor.
GN⁺ özeti
- HTML form doğrulaması güçlü olsa da iyi kullanılmıyor. Bunun nedeni API'nin karmaşıklığı olabilir.
setCustomValidity metodu, karmaşık doğrulama mantığını işleyebilen güçlü bir araçtır.
- Asenkron doğrulama gibi karmaşık senaryoları ele alabilecek yöntemler sunuluyor.
- Bu yazı, geliştiricilerin HTML form doğrulamasını daha iyi kullanmasına yardımcı olacak faydalı bilgiler sağlıyor.
1 yorum
Hacker News görüşleri
Web tarayıcıları hâlâ yerleşik HTML doğrulama mesajlarının stilini değiştirmeye izin vermiyor ve Chrome ile Firefox, işletim sistemi platformu UI yönergelerini izlemediği için projenin estetik anlayışıyla çakışıyor
<select multiple>kullanımındaki verimsizlikten şikâyet ediliyorBelirli
typeöznitelik değerlerini (ör. "email", "number", "url") kullanmak, mobilde en uygun klavyeyi tetikleyerek kullanıcı deneyimini önemli ölçüde iyileştirebilirSpesifikasyonu yazan kişiler gerçek kullanımdan kopuk ve basit şeyler için uygun olsa da karmaşık formlarda elle yazmak daha iyi
Formların temel sadeliğini gözden kaçırmış olmaktan duyulan pişmanlık dile getiriliyor ve başka birinin bakış açısını paylaştığı için teşekkür ediliyor
Checkbox için bir label olduğunda, label'a "for" özniteliği eklenerek label'a tıklamanın checkbox'ı etkinleştirip devre dışı bırakabilmesi isteniyor
React kullanmayan basit bir örnek veriliyor
HTML form doğrulaması harika, ancak Firefox for Android'de çalışmaması gibi büyük bir sorun var
Birçok framework ve kütüphane stillendirilebilir doğrulama özellikleri sunduğu için, bunun için özellikle uğraşmaya gerek yok
Doğrulamayı aşırı kullanmamaya dikkat etmek gerekiyor
2FA girişinde
type=passwordyanlış kullanıldığında parola yöneticileri ve tarayıcıların kafası karışıyor