【发布时间】:2021-03-16 19:36:45
【问题描述】:
我有一个简单的密码验证。两个带有图标的输入字段,用户可以在其中看到输入的密码。 代码运行良好。但是我为两个相似的输入写了两个相似的重复代码。并且无法设法缩短代码以便可以添加一次事件,并适用于两个输入(但不能同时)。 这是JS代码。
const password = document.getElementById('pass');
const repeatPass = document.getElementById('repeat_pass');
function validatePassword() {
const icon = document.getElementById('icon1');
const icon2 = document.getElementById('icon2');
icon.addEventListener('click', () => {
if (password.getAttribute('type') === 'password') {
password.setAttribute('type', 'text');
icon.classList.add('fa-eye-slash');
icon.classList.remove('fa-eye');
} else {
icon.classList.remove('fa-eye-slash');
icon.classList.add('fa-eye');
password.setAttribute('type', 'password');
}
});
icon2.addEventListener('click', () => {
if (repeatPass.getAttribute('type') === 'password') {
repeatPass.setAttribute('type', 'text');
icon2.classList.add('fa-eye-slash');
icon2.classList.remove('fa-eye');
} else {
icon2.classList.remove('fa-eye-slash');
icon2.classList.add('fa-eye');
repeatPass.setAttribute('type', 'password');
}
});
const submit = document.querySelector('.password-form')
const errorText = document.createElement('span');
submit.addEventListener('submit', () => {
if (password.value !== repeatPass.value) {
repeatPass.after(errorText);
errorText.innerText = 'Password does not match.';
errorText.style.color = 'red';
} else {
password.value = "";
repeatPass.value = "";
alert('You are welcome');
}
}
);
}
validatePassword();
【问题讨论】:
-
将您的事件处理程序放入包含重复代码的函数中。
-
为什么不简单地将验证逻辑放在一个额外的函数中?
标签: javascript passwords