Le risposte che utilizzano pattern e un'espressione regolare scrivono la password dell'utente nelle proprietà di input come testo normale pattern='mypassword'
. Questo sarà visibile solo se gli strumenti per sviluppatori sono aperti, ma non sembra ancora una buona idea.
Un altro problema con l'utilizzo di pattern per verificare una corrispondenza è che è probabile che si desideri utilizzare pattern per verificare che la password sia della forma corretta, ad esempio lettere e numeri misti.
Penso anche che questi metodi non funzioneranno bene se l'utente passa da un input all'altro.
Ecco la mia soluzione che utilizza un po 'più di JavaScript ma esegue un semplice controllo di uguaglianza quando uno degli input viene aggiornato e quindi imposta una validità HTML personalizzata. Entrambi gli input possono ancora essere testati per uno schema come il formato dell'email o la complessità della password.
Per una pagina reale cambierai i tipi di input in "password".
<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>