You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.4 KiB
38 lines
1.4 KiB
window.onload = function ()
|
|
{
|
|
document.querySelector('input#password').addEventListener('input', validatePassword);
|
|
document.querySelector('button#toggle-password').addEventListener('click', togglePassword);
|
|
}
|
|
|
|
function togglePassword()
|
|
{
|
|
const passwordInput = document.querySelector('input#password');
|
|
const togglePasswordButton = document.querySelector('button#toggle-password');
|
|
if (passwordInput.type === 'password') {
|
|
passwordInput.type = 'text';
|
|
togglePasswordButton.textContent = 'visibility_off';
|
|
togglePasswordButton.setAttribute('aria-label',
|
|
'Hide password.');
|
|
} else {
|
|
passwordInput.type = 'password';
|
|
togglePasswordButton.textContent = 'visibility';
|
|
togglePasswordButton.setAttribute('aria-label',
|
|
'Show password as plain text. ' +
|
|
'Warning: this will display your password on the screen.');
|
|
}
|
|
}
|
|
function validatePassword()
|
|
{
|
|
const passwordInput = document.querySelector('input#password');
|
|
let message= '';
|
|
if (!/.{8,}/.test(passwordInput.value)) {
|
|
message = 'At least eight characters. ';
|
|
}
|
|
if (!/.*[A-Z].*/.test(passwordInput.value)) {
|
|
message += '\nAt least one uppercase letter. ';
|
|
}
|
|
if (!/.*[a-z].*/.test(passwordInput.value)) {
|
|
message += '\nAt least one lowercase letter.';
|
|
}
|
|
passwordInput.setCustomValidity(message);
|
|
} |