Gibt es eine Möglichkeit, zu verlangen, dass die Einträge in zwei Formularfeldern mit HTML5 übereinstimmen? Oder muss das noch mit Javascript gemacht werden? Wenn Sie beispielsweise zwei Kennwortfelder haben und sicherstellen möchten, dass ein Benutzer in jedes Feld dieselben Daten eingegeben hat, können einige Attribute oder eine andere Codierung durchgeführt werden, um dies zu erreichen?
98
Antworten:
Nicht genau mit HTML5-Validierung, aber ein wenig JavaScript kann das Problem beheben. Folgen Sie dem folgenden Beispiel:
quelle
oninput="check(this)"
zum ersten Kennwortfeld und 2) Änderninput.value
der Funktion indocument.getElementById('password_confirm').value
. So wird esif (document.getElementById('password_confirm').value != document.getElementById('password').value)
Sie können mit regulären Ausdrücken Eingabemuster eingeben ( Browserkompatibilität überprüfen )
quelle
pattern
Attribut sollte für daspassword_two
Feld weggelassen werden. Wenn Sie wie bisher ein Kennwort eingeben, das kürzer als 6 Zeichen in daspassword_two
Feld ist, während Sie das Feldpassword
leer lassen, wird einePlease enter the same Password as above
Bestätigungsmeldung angezeigt. Was verwirrender sein könnte: Dasselbe passiert, wenn Sie in beide Felder genau dasselbe Passwort eingeben, das kürzer als 6 Zeichen ist.Eine einfache Lösung mit minimalem Javascript besteht darin, das HTML-Attributmuster zu verwenden (das von den meisten modernen Browsern unterstützt wird). Dies funktioniert, indem das Muster des zweiten Feldes auf den Wert des ersten Feldes gesetzt wird.
Leider müssen Sie auch dem regulären Ausdruck entkommen, für den keine Standardfunktion existiert.
quelle
<input type="password" name="password" oninput="document.getElementById('confirm').pattern = this.value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&')" required><input type="password" id="confirm" name="confirm" pattern="" title="Fields must match" required>
Nicht lesbar wie Ihre, vermeidet jedoch das separate Skript / die separate Funktion.JavaScript wird benötigt, aber die Codemenge kann durch Verwendung eines Zwischenelements
<output>
und einesoninput
Formularhandlers zur Durchführung des Vergleichs auf ein Minimum reduziert werden (Muster und Validierung könnten diese Lösung erweitern, werden hier jedoch der Einfachheit halber nicht angezeigt):quelle
Nicht nur HTML5, sondern auch ein bisschen JavaScript
Klicken Sie [hier] auf https://codepen.io/diegoleme/pen/surIK
HTML
JAVASCRIPT
quelle
Die Antworten, die Muster und einen regulären Ausdruck verwenden, schreiben das Kennwort des Benutzers als einfachen Text in die Eingabeeigenschaften
pattern='mypassword'
. Dies ist nur sichtbar, wenn Entwicklertools geöffnet sind, aber es scheint immer noch keine gute Idee zu sein.Ein weiteres Problem bei der Verwendung von Mustern zur Überprüfung auf Übereinstimmung besteht darin, dass Sie wahrscheinlich Muster verwenden möchten, um zu überprüfen, ob das Kennwort die richtige Form hat, z. B. gemischte Buchstaben und Zahlen.
Ich denke auch, dass diese Methoden nicht gut funktionieren, wenn der Benutzer zwischen den Eingaben wechselt.
Hier ist meine Lösung, die etwas mehr JavaScript verwendet, aber eine einfache Gleichheitsprüfung durchführt, wenn eine der Eingaben aktualisiert wird, und dann eine benutzerdefinierte HTML-Gültigkeit festlegt. Beide Eingaben können weiterhin auf ein Muster wie E-Mail-Format oder Kennwortkomplexität getestet werden.
Für eine echte Seite würden Sie die Eingabetypen in "Passwort" ändern.
quelle
Wie bereits in anderen Antworten erwähnt, gibt es dafür keinen reinen HTML5-Weg.
Wenn Sie JQuery bereits verwenden , sollte dies genau das tun, was Sie benötigen:
quelle