Các câu trả lời sử dụng mẫu và regex ghi mật khẩu của người dùng vào các thuộc tính đầu vào dưới dạng văn bản thuần túy pattern='mypassword'
. Điều này sẽ chỉ hiển thị nếu các công cụ dành cho nhà phát triển đang mở nhưng có vẻ như đây không phải là một ý tưởng hay.
Một vấn đề khác với việc sử dụng mẫu để kiểm tra sự trùng khớp là bạn có thể muốn sử dụng mẫu để kiểm tra xem mật khẩu có đúng dạng không, ví dụ: hỗn hợp các chữ cái và số.
Tôi cũng nghĩ rằng các phương pháp này sẽ không hoạt động tốt nếu người dùng chuyển đổi giữa các đầu vào.
Đây là giải pháp của tôi sử dụng nhiều JavaScript hơn một chút nhưng thực hiện kiểm tra bình đẳng đơn giản khi một trong hai đầu vào được cập nhật và sau đó đặt hiệu lực HTML tùy chỉnh. Cả hai đầu vào vẫn có thể được kiểm tra đối với một mẫu như định dạng email hoặc độ phức tạp của mật khẩu.
Đối với một trang thực, bạn sẽ thay đổi kiểu nhập thành 'mật khẩu'.
<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>