Wie kann man manuell eine HTML5-Validierungsnachricht von einer JavaScript-Funktion anzeigen?

Lesezeit: 2 Minuten

Wie kann man manuell eine HTML5 Validierungsnachricht von einer JavaScript Funktion anzeigen
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.).

JSFiddle: http://jsfiddle.net/ahmadka/tjXG3/

HTML-Formular:

<form>
    <input type="email" id="email" placeholder="Enter your email here..." required>
    <button type="submit">Submit</button>
</form>

<button id="triggerMsg" onclick="triggerCustomMsg()">Trigger Custom Message</button>

Javascript:

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

    – Explosionspillen

    9. Juli 2013 um 14:07 Uhr

  • http://jsfiddle.net/tjXG3/2/ mit jquery

    – softsdev

    9. Juli 2013 um 14:20 Uhr


1647094325 359 Wie kann man manuell eine HTML5 Validierungsnachricht von einer JavaScript Funktion anzeigen
Diego

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?

    – Pratik Kumar

    22. September 2021 um 5:14 Uhr

  • @PratikKumar Ich glaube, Sie können verwenden HTMLSelectElement.setCustomValidity

    – Wasi-Meister

    2. Februar um 11:27 Uhr

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.

Demo

http://jsfiddle.net/u4ca6kvm/2/

Wie von @Diego erwähnt, können Sie form.reportValidity();
Um IE und Safari zu unterstützen, fügen Sie dieses Polyfill hinzu, es funktioniert einfach:

if (!HTMLFormElement.prototype.reportValidity) {
    HTMLFormElement.prototype.reportValidity = function() {
      if (this.checkValidity()) return true;
      var btn = document.createElement('button');
      this.appendChild(btn);
      btn.click();
      this.removeChild(btn);
      return false;
    }
}

993880cookie-checkWie kann man manuell eine HTML5-Validierungsnachricht von einer JavaScript-Funktion anzeigen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy