Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
required niteliği, bir form alanının boş bırakılmasını engelleyen istemci tarafı bir doğrulamadır. Kullanıcı alanı doldurmadan formu göndermeye çalışırsa tarayıcı gönderimi durdurur ve kendi doğrulama mesajını gösterir. Ancak alanın doğru, güvenli veya iş kurallarına uygun olduğunu kanıtlamaz; sunucu tarafında da mutlaka doğrulama yapılmalıdır.

required nasıl çalışır?​


required değersiz bir Boolean niteliktir. Yazılması yeterlidir; required="true" kullanmak gerekli değildir. Örneğin:

HTML:
<style>input, select, button { border-radius: 3px; }</style>
<form action="/kayit" method="post">
  <label for="ad">Adınız</label>
  <input id="ad" name="ad" type="text" required>

  <button type="submit">Gönder</button>
</form>

Kullanıcı ad alanını boş bırakıp gönderirse tarayıcı formu göndermez. Alan doldurulursa bu kontrol geçilir ve formun diğer kısıtları değerlendirilir. Formda novalidate bulunması veya gönderme düğmesinde formnovalidate kullanılması istemci tarafı doğrulamayı devre dışı bırakabilir.

Hangi kontrolü yapar, hangilerini yapmaz?​


required temel olarak alanın boş olup olmadığını denetler. Kontrolün türüne göre boşluk kavramı değişebilir; type=text alanında bir veya daha çok boşluk boş string değildir ve required kontrolünü geçebilir. Anlamlı metin gereksinimini uygulama ayrıca doğrulamalıdır; required kendiliğinden trim yapmaz.

Aşağıdaki ayrım, niteliğin sınırlarını gösterir:

Alan veya kuralrequired ile kontrol edilir mi?Açıklama
Metin alanının boş olmamasıEvetKullanıcı değer girmeden gönderemez.
E-posta biçimiHayırBunun için type="email" ve gerekirse pattern kullanılır.
Minimum veya maksimum değerHayırSayı, tarih veya uzunluk sınırı için min, max, minlength ve maxlength değerlendirilir.
Onay kutusunun işaretlenmesiEvetrequired verilen onay kutusu işaretlenmeden form gönderilmez.

Bu nedenle required type="email" birlikte kullanılırsa iki farklı kontrol yapılır: alan boş bırakılamaz ve girilen değer tarayıcının e-posta biçimi kontrolünden geçmelidir. Bu yine de e-posta adresinin gerçekten var olduğunu veya kullanıcıya ait olduğunu doğrulamaz.

Radio, checkbox ve select alanlarında kullanım​


Aynı name değerine sahip radio düğmelerinden bir gruba required eklemek, gruptan en az bir seçimin yapılmasını zorunlu kılar. Checkbox için nitelik yalnızca eklendiği kutuyu zorunlu kılar; “kullanım şartlarını kabul ediyorum” gibi tek bir onay kutusunda bu beklenen davranıştır.

Tek satırlı tek seçimli select için henüz seçim yapılmadığını göstermek istiyorsanız ilk doğrudan option boş değerli yer tutucu olabilir. Önceden gerçek seçim yapmak her durumda hata değildir; örnek seçimsiz başlangıç içindir:

Kod:
<label for="ulke">Ülke</label>
<select id="ulke" name="ulke" required>
  <option value="">Seçiniz</option>
  <option value="TR">Türkiye</option>
  <option value="DE">Almanya</option>
</select>

İlk seçeneğin değeri gerçek bir seçim içeriyorsa alan başlangıçta dolu kabul edilebilir. Kullanıcı arayüzünde metin “Seçiniz” olsa bile value değerini kontrol etmek bu yüzden önemlidir.

Uygulanabilir kontrol listesi​


  1. Kullanıcının mutlaka sağlaması gereken alanlara required ekleyin; isteğe bağlı alanları gereksiz yere zorunlu yapmayın.
  2. Alan türüne uygun diğer kısıtları ekleyin: e-posta için type="email", biçim için pattern, uzunluk için minlength veya maxlength.
  3. Boş veya geçersiz bir değerle formu deneyin. Tarayıcı gönderimi durduruyorsa istemci doğrulaması çalışıyordur; bu, sunucu doğrulamasının yerine geçmez.
  4. Sunucuda gelen değeri yeniden doğrulayın, normalleştirin ve beklenmeyen değerleri reddedin. İstemci tarafındaki HTML nitelikleri değiştirilebilir veya tamamen atlanabilir.

Sık yapılan hatalar​


required="false" yazmak alanı isteğe bağlı yapmaz; Boolean nitelik bulunduğu sürece alan zorunludur. İsteğe bağlı yapmak için niteliği HTML’den kaldırın. Ayrıca required boşlukları temizlemez, veritabanına kayıt yapmaz, iki alanın birbiriyle eşleşmesini kontrol etmez ve güvenlik doğrulaması sağlamaz. Bu tür kurallar için JavaScript gerekebilir; fakat JavaScript kullanılsa bile son karar sunucuda verilmelidir.

Sık sorulan sorular​

JavaScript form.submit çağrısı required kontrolünü çalıştırır mı?​

Doğrudan submit() yerleşik kısıt doğrulamasını ve submit olayını atlar. requestSubmit() ise gönderme düğmesi akışına benzer şekilde doğrulamayı çalıştırır. Her iki durumda da sunucu, zorunlu alanın değerini bağımsız doğrulamalıdır.

setCustomValidity mesajını neden temizlemek gerekir?​

Boş olmayan özel geçerlilik mesajı kontrolü geçersiz tutar; kullanıcı değeri düzeltse de siz mesajı boş string ile temizlemediyseniz gönderim engellenebilir. Özel iş kuralını yeniden değerlendirdiğinizde hem başarısız hem başarılı yolu güncelleyin. readonly veya disabled kontrollerin doğrulamaya katılımı da farklıdır.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.