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.
<form>
<input type="text" id="password1" oninput="setPasswordConfirmValidity();">
<input type="text" id="password2" oninput="setPasswordConfirmValidity();">
</form>
<script>
function setPasswordConfirmValidity(str) {
const password1 = document.getElementById('password1');
const password2 = document.getElementById('password2');
if (password1.value === password2.value) {
password2.setCustomValidity('');
} else {
password2.setCustomValidity('Passwords must match');
}
console.log('password2 customError ', document.getElementById('password2').validity.customError);
console.log('password2 validationMessage ', document.getElementById('password2').validationMessage);
}
</script>