我正在做一个 JS 练习,他们要求我输入一个有要求的密码,如果我第三次尝试目标错误,您将无法继续在输入中输入数据。问题是我有实时验证,在你正确输入单词之前,它总是无效的。我留下我的代码。
document
.getElementById('campo')
.addEventListener('input', function(evt) {
const campo = evt.target,
valido = document.getElementById('campoOK'),
regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$%*&\-\_])[A-Za-z\d$@$%*&\-\_]{8,16}$/;
if (regex.test(campo.value)) {
valido.innerText = "válido";
} else {
valido.innerText = "incorrecto";
}
});
您可以使用 a
button
来验证密码,通过添加一个计数器,我们将知道它需要多少次尝试,在第三次错误尝试时,该按钮validar
将被阻止。通过向事件添加侦听器
input
,您所做的就是在每次该字段发生变化时进行评估,在这种情况下,每个按键都被按下。也就是说,如果您正在编写的部分文本没有验证,它将被视为不正确。在您的正则表达式中,最少为 8 个字符,无论它是什么,它总是会在我们按下的第三个键上无效。
除此之外,计数器应该关闭,以免在每个事件上都重置计数器。为了使测试更舒适,在正则表达式中,我只在输入数字时才放得很好。