Ответы, использующие шаблон и регулярное выражение, записывают пароль пользователя во входные свойства в виде обычного текста pattern='mypassword'
. Это будет видно только в том случае, если инструменты разработчика открыты, но это все еще не кажется хорошей идеей.
Другая проблема с использованием шаблона для проверки совпадения заключается в том, что вы, вероятно, захотите использовать шаблон, чтобы проверить правильность формы пароля, например, смешанные буквы и цифры.
Я также думаю, что эти методы не будут работать, если пользователь переключается между входами.
Вот мое решение, которое использует немного больше JavaScript, но выполняет простую проверку равенства, когда любой ввод обновляется, а затем устанавливает настраиваемую валидность HTML. Оба входа все еще можно протестировать на наличие шаблона, такого как формат электронной почты или сложность пароля.
Для реальной страницы вы должны изменить типы ввода на «пароль».
<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>