Wie kann man manuell eine HTML5-Validierungsnachricht von einer JavaScript-Funktion anzeigen?
Lesezeit: 2 Minuten
Ahmad
Ich möchte wissen, ob es eine Möglichkeit gibt, einen HTML5-Validierungsfehler mithilfe einer JavaScript-Funktion programmgesteuert anzuzeigen.
Dies ist nützlich für Szenarien, in denen die E-Mail-Duplizierung überprüft werden muss. Zum Beispiel gibt eine Person eine E-Mail ein, drückt auf die Schaltfläche Senden und muss dann benachrichtigt werden, dass diese E-Mail bereits registriert ist oder so.
Ich weiß, dass es andere Möglichkeiten gibt, einen solchen Fehler anzuzeigen, aber ich wollte ihn auf die gleiche Weise anzeigen, wie die Validierungsfehlermeldungen angezeigt werden (z. B. ungültige E-Mail, leeres Feld usw.).
function triggerCustomMsg()
{
document.getElementById("email").setCustomValidity("This email is already used");
}
Der obige Code legt die benutzerdefinierte Nachricht fest, wird jedoch nicht automatisch angezeigt. Es wird nur angezeigt, wenn die Person auf die Schaltfläche “Senden” oder so etwas drückt.
Sie müssen die Übermittlung des Formulars auslösen, damit die Nachricht angezeigt wird
Sie können jetzt die Methode HTMLFormElement.reportValidity() verwenden, die derzeit in den meisten Browsern außer Internet Explorer implementiert ist (siehe Browser-Kompatibilität bei MDN). Es meldet Gültigkeitsfehler, ohne das Submit-Ereignis auszulösen, und sie werden auf die gleiche Weise angezeigt.
Die Methode reportValidity() ist gut, gibt aber eine eigene Fehlermeldung aus. Wie verwendet man reportValidity mit einer benutzerdefinierten Fehlermeldung?
var applicationForm = document.getElementById("applicationForm");
if (applicationForm.checkValidity()) {
applicationForm.submit();
} else {
applicationForm.reportValidity();
}
Die Methode reportValidity() löst eine HTML5-Validierungsnachricht aus.
Ich habe lange gesucht … Danke !!
– Lönix
22. Dezember 2020 um 10:48 Uhr
Diese Frage wurde vor über einem Jahr gestellt, aber es ist eine gute Frage, der ich kürzlich auch begegnet bin …
Meine Lösung bestand darin, JavaScript zu verwenden, um ein Attribut (ich ging mit “data-invalid”) auf dem zu erstellen <label> von jedem <input>, <select> und <textarea> enthält die Validierungsnachricht.
Dann etwas CSS…
label:after {
content: attr(data-invalid);
...
}
… zeigt die Fehlermeldung an.
Einschränkungen
Dies funktioniert nur, wenn jedes Element ein Label hat. Es funktioniert nicht, wenn Sie das Attribut auf das Element selbst setzen, weil <input> Elemente können nicht haben :after Pseudo-Elemente.
Sie müssen die Übermittlung des Formulars auslösen, damit die Nachricht angezeigt wird
– Explosionspillen
9. Juli 2013 um 14:07 Uhr
http://jsfiddle.net/tjXG3/2/ mit jquery
– softsdev
9. Juli 2013 um 14:20 Uhr