TL; DR: Eski tarayıcıları umursamıyor musunuz? Kullanın form.reportValidity()
.
Eski tarayıcı desteğine mi ihtiyacınız var? Okumaya devam etmek.
Aslında ise elle tetik doğrulama mümkün.
Yeniden kullanılabilirliği iyileştirmek için yanıtımda düz JavaScript kullanacağım, jQuery'ye gerek yok.
Aşağıdaki HTML formunu varsayın:
<form>
<input required>
<button type="button">Trigger validation</button>
</form>
Ve şimdi JavaScript'teki UI öğelerimizi alalım:
var form = document.querySelector('form')
var triggerButton = document.querySelector('button')
Internet Explorer gibi eski tarayıcılar için desteğe ihtiyacınız yok mu? Bu sizin içindir.
Tüm modern tarayıcılarda desteklemekreportValidity()
üzerine yöntemini form
elemanları.
triggerButton.onclick = function () {
form.reportValidity()
}
İşte bu, bitirdik. Ayrıca, bu yaklaşımı kullanan basit bir CodePen burada .
Eski tarayıcılar için yaklaşım
Aşağıda, reportValidity()
eski tarayıcılarda nasıl öykünülebileceğinin ayrıntılı bir açıklaması bulunmaktadır .
Ancak, bu kod bloklarını projenize kopyalayıp yapıştırmanıza gerek yoktur - sizin için hazır bir ponyfill / polyfill vardır.
reportValidity()
Desteklenmeyen yerlerde , tarayıcıyı biraz kandırmamız gerekir. Peki ne yapacağız?
- Formun geçerliliğini arayarak kontrol edin
form.checkValidity()
. Bu bize formun geçerli olup olmadığını söyleyecek, ancak doğrulama kullanıcı arayüzünü göstermeyecektir.
- Form geçersizse, geçici bir gönderme düğmesi oluşturur ve üzerine bir tıklama tetikleriz. Form geçerli olmadığından, aslında gönderilmeyeceğini biliyoruz , ancak kullanıcıya doğrulama ipuçları gösterecek. Geçici gönder düğmesini derhal kaldıracağız, böylece kullanıcı hiçbir zaman görmeyecektir.
- Form geçerliyse, hiçbir şekilde müdahale etmemize ve kullanıcının ilerlemesine izin vermemize gerek yoktur.
Kodda:
triggerButton.onclick = function () {
if (!form.checkValidity()) {
var tmpSubmit = document.createElement('button')
form.appendChild(tmpSubmit)
tmpSubmit.click()
form.removeChild(tmpSubmit)
} else {
}
}
Bu kod hemen hemen tüm yaygın tarayıcılarda çalışacaktır (IE11'e kadar başarıyla test ettim).
İşte çalışan bir CodePen örneği.