Odpowiedzi, które używają wzorca i wyrażenia regularnego, zapisują hasło użytkownika we właściwościach wejściowych jako zwykły tekst pattern='mypassword'
. Będzie to widoczne tylko wtedy, gdy narzędzia programistyczne są otwarte, ale nadal nie wydaje się to dobrym pomysłem.
Innym problemem związanym z używaniem wzorca do sprawdzania zgodności jest to, że prawdopodobnie będziesz chciał użyć wzorca, aby sprawdzić, czy hasło ma odpowiednią postać, np. Mieszane litery i cyfry.
Myślę też, że te metody nie będą działać dobrze, jeśli użytkownik przełączy się między wejściami.
Oto moje rozwiązanie, które używa nieco więcej JavaScript, ale wykonuje proste sprawdzenie równości, gdy dane wejściowe są aktualizowane, a następnie ustawia niestandardową ważność HTML. Oba dane wejściowe można nadal przetestować pod kątem wzorca, takiego jak format wiadomości e-mail lub złożoność hasła.
W przypadku prawdziwej strony zmieniłbyś typ danych wejściowych na „hasło”.
<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>