Zusammenfassung: Kein Interesse an alten Browsern? Verwenden Sie form.reportValidity()
.
Brauchen Sie Unterstützung für ältere Browser? Weiterlesen.
Es ist tatsächlich möglich, die Validierung manuell auszulösen.
In meiner Antwort verwende ich reinen JavaScript, um die Wiederverwendbarkeit zu verbessern - jQuery wird nicht benötigt.
Annehmen des folgenden HTML-Formulars:
Validierung auslösen
Lassen Sie uns unsere UI-Elemente in JavaScript auswählen:
var form = document.querySelector('form')
var triggerButton = document.querySelector('button')
Sie benötigen keine Unterstützung für alte Browser wie Internet Explorer? Dann ist das für Sie.
Alle modernen Browser unterstützen die reportValidity()
Methode auf form
Elementen.
triggerButton.onclick = function () {
form.reportValidity()
}
Das war's, wir sind fertig. Außerdem gibt es hier einen einfachen CodePen, der diesen Ansatz verwendet.
Ansatz für ältere Browser
Unten ist eine detaillierte Erklärung, wie reportValidity()
in älteren Browsern emuliert werden kann.
Sie müssen diese Code-Blöcke jedoch nicht selbst in Ihr Projekt kopieren - es gibt bereits ein Ponyfill/Polyfill für Sie verfügbar.
Wo reportValidity()
nicht unterstützt wird, müssen wir den Browser ein wenig austricksen. Also, was werden wir tun?
- Die Gültigkeit des Formulars überprüfen, indem
form.checkValidity()
aufgerufen wird. Dies sagt uns, ob das Formular gültig ist, aber zeigt nicht die Validierungsoberfläche an.
- Wenn das Formular ungültig ist, erstellen wir eine temporäre Absende-Schaltfläche und lösen einen Klick darauf aus. Da das Formular ungültig ist, wissen wir, dass es tatsächlich nicht gesendet wird, es zeigt jedoch dem Benutzer Validierungshinweise an. Wir entfernen die temporäre Absende-Schaltfläche sofort, sodass sie für den Benutzer niemals sichtbar ist.
- Wenn das Formular gültig ist, brauchen wir nicht einzugreifen und lassen den Benutzer fortfahren.
Im Code:
triggerButton.onclick = function () {
// Formular ist ungültig!
if (!form.checkValidity()) {
// Erstellen der temporären Schaltfläche, Klick und Entfernen
var tmpSubmit = document.createElement('button')
form.appendChild(tmpSubmit)
tmpSubmit.click()
form.removeChild(tmpSubmit)
} else {
// Formular ist gültig, lassen Sie den Benutzer fortfahren oder tun, was wir brauchen
}
}
Dieser Code wird in praktisch jedem gängigen Browser funktionieren (Ich habe ihn erfolgreich bis IE11 getestet).
Hier ist ein funktionierendes CodePen-Beispiel.