Відповіді, у яких використовується шаблон і регулярний вираз, записують пароль користувача у властивості введення у вигляді простого тексту 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>