Kullanıcıların formlara doğru verileri girmelerine yardımcı olun

Tarayıcılar, kullanıcıların verileri doğru biçimde girip girmediğini kontrol eden yerleşik doğrulama özelliklerine sahiptir. Doğru öğeleri ve nitelikleri kullanarak bu özellikleri etkinleştirebilirsiniz. Ayrıca, CSS ve JavaScript ile form doğrulamayı geliştirebilirsiniz.

Formlarınızı neden doğrulamalısınız?

Önceki modülde, kullanıcılarınızın sürekli olarak uğraşmaktan kaçınmasına bilgileri formlara tekrar girebilirsiniz. Kullanıcıların geçerli verileri girmelerine nasıl yardımcı olabilirsiniz?

Hangi alanların zorunlu olduğunu bilmeden form doldurmak sinir bozucudur, ya da bu alanların kısıtlamalarına bağlı kalmıyor. Örneğin, bir kullanıcı adı girer ve bir form gönderirsiniz. Bu şekilde, kullanıcı adlarının en az sekiz karakterden oluşması gerektiğini öğrenebilirsiniz.

Doğrulama kuralları tanımlayarak ve bunları ileterek kullanıcılara bu konuda yardımcı olabilirsiniz.

Kullanıcıların zorunlu alanları yanlışlıkla doldurmalarına yardımcı olun

Formlarınıza girilen veriler için doğru biçimi ve kısıtlamaları belirtmek üzere HTML kullanabilirsiniz. Ayrıca hangi alanların zorunlu olduğunu belirtmeniz gerekir.

Bu formu veri girmeden göndermeyi deneyin. <input> ekinde, alanın zorunlu olduğunu belirten bir hata mesajı görüyor musunuz?

Bunun nedeni required özelliğidir.

<label for="name">Name (required)</label>
<input required type="text" id="name" name="name">

type="email" gibi daha fazla tür kullanabileceğinizi zaten öğrendiniz. Gerekli e-postalara (<input>) bakalım.

Bu formu veri girmeden göndermeyi deneyin. Önceki demoya göre herhangi bir fark var mı? Şimdi e-posta alanına adınızı girin ve göndermeyi deneyin. Farklı bir hata mesajı görüyorsunuz. Peki bu nasıl mümkün oluyor? Girdiğiniz değer geçerli bir e-posta adresi olmadığı için farklı bir mesaj alıyorsunuz.

required özelliği, tarayıcıya alanın zorunlu olduğunu bildirir. Tarayıcı, girilen verilerin type biçimiyle eşleşip eşleşmediğini de test eder. Örnekte gösterilen e-posta alanı yalnızca boş değilse ve girilen veriler geçerli bir e-posta adresiyse geçerlidir.

Kullanıcının doğru biçimi girmesine yardımcı olun

Bir alanı nasıl zorunlu hale getireceğinizi öğrendiniz. Tarayıcıya, kullanıcının form alanına en az sekiz karakter girmesi gerektiğini nasıl söylersiniz?

Demoyu deneyin. Yaptığınız değişiklik sonrasında, sekiz karakterden daha kısa bir bilgi girerseniz formu gönderememeniz gerekir.

Yanıtı aç/kapat

<label for="password">Password (required)</label>
<input required="" minlength="8" type="password" id="password" name="password">

Özelliğin adı: minlength. Değeri 8 olarak ayarladığınızda, istediğiniz doğrulama kuralına sahip olursunuz. Bunun tam tersini istiyorsanız maxlength değerini kullanın.

Doğrulama kurallarınızı iletme

<label for="password">Password (required)</label>
<input required minlength="8" type="password" id="password"
  name="password" aria-describedby="password-minlength">
<div id="password-minlength">Enter at least eight characters</div>

Tüm kullanıcıların doğrulama kurallarınızı anladığından emin olun. Bunun için form kontrolünü, kuralları açıklayan bir öğeyle bağlayın. Bunu yapmak için formun id ile birlikte öğeye bir aria-describedby özelliği ekleyin.

Desen özelliği

Bazen daha gelişmiş doğrulama kuralları tanımlamak isteyebilirsiniz. Yine, bir HTML özelliği kullanabilirsiniz. Adı pattern. Özetle, örneğin, normal ifadeyi kullanın.

<label for="animal">What is your favorite animal? (required)</label>
<input required pattern="[a-z]{2,20}" type="text" id="animal" name="animal">

Burada yalnızca küçük harflere izin verilir; kullanıcı en az iki, yirmiden fazla karakter girmemelidir.

pattern bölümünü büyük harflere de izin verecek şekilde nasıl değiştirirsiniz? Deneyin.

Yanıtı aç/kapat

Doğru yanıt: pattern="[a-zA-Z]{2,20}".

Stil ekle

Artık HTML'de doğrulama eklemeyi öğrendiniz. Form kontrollerinin stilini doğrulama durumuna göre de ayarlasanız güzel olmaz mıydı? Bunu CSS'de yapabilirsiniz.

Zorunlu form alanının stilini belirleme

Kullanıcıya formunuzla etkileşime geçmeden önce bir alanın zorunlu olduğunu gösterin.

required alanlarını, :required CSS sözde sınıfıyla biçimlendirebilirsiniz.

input:required {
  border: 2px solid;
}

Stil geçersiz form denetimleri

Kullanıcı tarafından girilen veriler geçersizse ne olduğunu hatırlıyor musunuz? Form denetimine eklenmiş hata mesajı görünür. Böyle bir durumda öğenin görünümünü uyarlamak harika olmaz mıydı?

:invalid sözde sınıfını kullanabilirsiniz geçersiz form kontrollerine stil ekleyin. Buna ek olarak, geçerli form öğelerinin stil özelliklerini ayarlamak için sözde :valid sınıfı da vardır.

Stillerinizi doğrulamaya göre uyarlamanın başka yolları da vardır. CSS ile ilgili modülde formların stil özelliklerini ayarlama hakkında daha fazla bilgi edineceksiniz.

JavaScript ile doğrulama

Formlarınızın doğrulanmasını daha da iyileştirmek için JavaScript Constraint Validation API (JavaScript Kısıtlama Doğrulama API'si).

Anlamlı hata mesajları sağlayın

Hata mesajlarının her tarayıcıda aynı olmadığını daha önce öğrenmiştiniz. Aynı mesajı herkese nasıl gösterebilirsiniz?

Bunu yapmak için setCustomValidity() yöntemidir. Şimdi, bunun işleyiş şekline göz atalım.

const nameInput = document.querySelector('[name="name"]');

nameInput.addEventListener('invalid', () => {
    nameInput.setCustomValidity('Please enter your name.');
 });

Özel hata mesajını ayarlamak istediğiniz öğeyi sorgulayın. Tanımladığınız öğenizin invalid etkinliğini dinleyin. setCustomValidity() ile mesajı ayarladınız. Bu örnekte, giriş geçersizse Please enter your name. mesajı gösterilmektedir.

Farklı tarayıcılarda demoyu açın, her yerde aynı mesajı görmeniz gerekir. Şimdi, JavaScript'i kaldırıp tekrar deneyin. Varsayılan hata mesajları tekrar gösterilir.

Constraint Validation API ile yapabileceğiniz daha pek çok şey var. Bu JavaScript ile doğrulamasını daha sonraki bir modülde inceleyeceğiz.

Gerçek zamanlı doğrulama nasıl yapılır? Bir form kontrolünün onblur etkinliğini dinleyerek JavaScript'te gerçek zamanlı doğrulama ekleyebilirsiniz. ve bir kullanıcı form alanından ayrıldığında girişi hemen doğrular.

Demodaki form alanını tıklayın, "web" yazın ve sayfada başka bir yeri tıklayın. Form alanının altında minlength için yerel hata mesajını görürsünüz.

Uygulama hakkında daha fazla bilgi JavaScript ile gerçek zamanlı doğrulama hakkında daha fazla bilgi edinin.

Öğrendiklerinizi sınayın

Formları doğrulama bilginizi test edin

Form kontrollerini zorunlu hale getirmek için hangi özelliği kullanıyorsunuz?

required
🎉
needed
Tekrar deneyin.
essential
Tekrar deneyin.
obligatory
Tekrar deneyin.

Kendi hata mesajlarınızı tanımlayabiliyor musunuz?

Evet, message HTML özelliğiyle.
Tekrar deneyin.
Hayır
Bu mümkün, tekrar deneyin!
Evet, :invalid CSS sözde öğesiyle.
Tekrar deneyin.
Evet, Constraint Validation API ile.
🎉

type="email" ve required özelliğine sahip bir <input> gönderilebilir:

Boş değilse.
Tekrar deneyin.
Değeri geçerli bir e-posta adresiyse.
🎉
Her durumda.
Tekrar deneyin.
Değeri e-posta kelimesini içeriyorsa.
Tekrar deneyin.

Kaynaklar