Erforderliche benutzerdefinierte Feldvalidierung
Ich habe ein Formular mit vielen Eingabefeldern. Ich habe HTML5-Validierungen gesetzt
<input type="text" name="topicName" id="topicName" required />
Wenn ich das Formular abschicke, ohne dieses Textfeld auszufüllen, wird die Standardnachricht wie angezeigt
"Please fill out this field"
Kann mir bitte jemand helfen, diese Nachricht zu bearbeiten?
Ich habe einen Javascript-Code, um ihn zu bearbeiten, aber er funktioniert nicht
$(document).ready(function() {
var elements = document.getElementsByName("topicName");
for (var i = 0; i < elements.length; i++) {
elements[i].oninvalid = function(e) {
e.target.setCustomValidity("");
if (!e.target.validity.valid) {
e.target.setCustomValidity("Please enter Room Topic Title");
}
};
elements[i].oninput = function(e) {
e.target.setCustomValidity("");
};
}
})
Benutzerdefinierte Validierungen per E-Mail senden
Ich habe folgendes HTML-Formular
<form id="myform">
<input id="email" name="email" type="email" />
<input type="submit" />
</form>
Validierungsnachrichten, die ich möchte.
Erforderliches Feld: Bitte E-Mail-Adresse eingeben
Falsche E- Mail-Adresse : 'testing @ .com' ist keine gültige E-Mail-Adresse. ( hier eingegebene E-Mail-Adresse im Textfeld angezeigt )
Ich habe es versucht.
function check(input) {
if(input.validity.typeMismatch){
input.setCustomValidity("'" + input.value + "' is not a Valid Email Address.");
}
else {
input.setCustomValidity("");
}
}
Diese Funktion funktioniert nicht richtig. Haben Sie eine andere Möglichkeit, dies zu tun? Es wäre dankbar.
javascript
jquery
html
Sumit Bijvani
quelle
quelle
Antworten:
Code-Auszug
Da diese Antwort sehr viel Beachtung fand, ist hier ein schönes konfigurierbares Snippet, das ich mir ausgedacht habe:
Verwendung
→ jsFiddle
Mehr Details
defaultText
wird zunächst angezeigtemptyText
wird angezeigt, wenn die Eingabe leer ist (wurde gelöscht)invalidText
wird angezeigt, wenn die Eingabe vom Browser als ungültig markiert wird (z. B. wenn es sich nicht um eine gültige E-Mail-Adresse handelt).Sie können jeder der drei Eigenschaften entweder eine Zeichenfolge oder eine Funktion zuweisen.
Wenn Sie eine Funktion zuweisen, kann sie einen Verweis auf das Eingabeelement (DOM-Knoten) akzeptieren und muss eine Zeichenfolge zurückgeben, die dann als Fehlermeldung angezeigt wird.
Kompatibilität
Getestet in:
Alte Antwort
Sie können die alte Version hier sehen: https://stackoverflow.com/revisions/16069817/6
quelle
please fill out this field
können Sie diese Nachricht ändern inPlease enter email address
setCustomValidity()
leere E-Mails erst einstellen, nachdem das Unschärfeereignis einmal ausgelöst wurde. Daher müssen wir es auch nur beim Laden des DOM aufrufen. Siehe aktualisiertes Beispiel / jsFiddle.if (input.value == "") {
, um stattdessen zu lesenif (input.value.trim() == "") {
- macht den Trick für mich.Sie können dies einfach mit einem ungültigen Attribut erreichen. Überprüfen Sie diesen Demo-Code
Codepen-Demo: https://codepen.io/akshaykhale1992/pen/yLNvOqP
quelle
oninput="setCustomValidity('')"
: stackoverflow.com/a/16878766/1729850HTML:
JAVASCRIPT:
Demo:
http://jsfiddle.net/patelriki13/Sqq8e/
quelle
Versuche dies:
Ich habe dies in Chrome und FF getestet und es hat in beiden Browsern funktioniert.
quelle
<b>Error: </b> Incorrect email address
.setCustomValidity("")
hilft nicht. Gibt es einen anderen Parameter, der eingestellt werden muss? Bitte beraten.Mann, das habe ich in HTML 5 noch nie gemacht, aber ich werde es versuchen. Schauen Sie sich diese Geige an.
Ich habe einige native jQuery-, HTML5-Ereignisse und -Eigenschaften sowie ein benutzerdefiniertes Attribut für das Eingabe-Tag verwendet (dies kann zu Problemen führen, wenn Sie versuchen, Ihren Code zu validieren). Ich habe nicht in allen Browsern getestet, aber ich denke, es könnte funktionieren.
Dies ist der JavaScript-Code für die Feldvalidierung mit jQuery:
Nett. Hier ist die einfache Form HTML:
Das Attribut
requiredmessage
ist das benutzerdefinierte Attribut, über das ich gesprochen habe. Sie können Ihre Nachricht für jedes erforderliche Feld dort festlegen, da jQuery von ihr abgerufen wird, wenn die Fehlermeldung angezeigt wird. Sie müssen nicht jedes Feld in JavaScript richtig einstellen, jQuery erledigt dies für Sie. Dieser Regex scheint in Ordnung zu sein (zumindest blockiert er deine[email protected]
! Haha)Wie Sie auf der Geige sehen können, mache ich eine zusätzliche Validierung des Ereignisses für das Senden des Formulars ( dies gilt auch für document.ready ):
Ich hoffe das funktioniert oder hilft dir trotzdem.
quelle
data-
. zBdata-requiredMessage
. Mit jQuery ist dies zugänglich mit$(element).data('requiredMessage')
; Ich kenne die Standard-DOM-Schnittstelle nicht ganz genau.Das funktioniert gut für mich:
und das Formular, mit dem ich es verwende (abgeschnitten):
quelle
Sie können dies tun, indem Sie einen Ereignis-Listener für "ungültig" für alle Eingänge desselben Typs oder nur einen einrichten, je nachdem, was Sie benötigen, und dann die richtige Nachricht einrichten.
Im zweiten Teil des Skripts wird die Gültigkeitsnachricht zurückgesetzt, da das Formular sonst nicht gesendet werden kann. Dies verhindert beispielsweise, dass die Nachricht ausgelöst wird, selbst wenn die E-Mail-Adresse korrigiert wurde.
Außerdem müssen Sie das Eingabefeld nicht wie erforderlich einrichten, da "ungültig" ausgelöst wird, sobald Sie mit der Eingabe der Eingabe beginnen.
Hier ist eine Geige dafür: http://jsfiddle.net/napy84/U4pB7/2/ Hoffe, das hilft!
quelle
Verwenden Sie das Attribut "title" in jedem Eingabe-Tag und schreiben Sie eine Nachricht darauf
quelle
Sie müssen nur das Element abrufen und die Methode setCustomValidity verwenden.
Beispiel
quelle
Sie können einfach das Attribut oninvalid = "verwenden , wobei der this.setCustomValidity () eventListener!
Hier sind meine Demo-Codes! (Sie können sie zum Auschecken ausführen!)
Referenzlink
http://caniuse.com/#feat=form-validation
https://www.w3.org/TR/html51/sec-forms.html#sec-constraint-validation
quelle
Sie können dieses Skript hinzufügen, um Ihre eigene Nachricht anzuzeigen.
Für andere Überprüfungen wie Musterfehlanpassungen können Sie zusätzliche if-Bedingungen hinzufügen
mögen
Es gibt andere Gültigkeitsbedingungen wie rangeOverflow, rangeUnderflow, stepMismatch, typeMismatch, valid
quelle