gpt4 book ai didi

Javascript - 简单密码强度指示器

转载 作者:行者123 更新时间:2023-11-28 17:13:34 44 4
gpt4 key购买 nike

我试图通过更改 html5 进度元素的值来使用 javascript 创建一个简单的密码强度指示器,但是出了问题,有人可以指出这里的错误吗?控制台显示零错误,这一定与更改函数未绑定(bind)到 ID 为“pwd”的输入有关?

<!DOCTYPE html>
<html>
<head>
<title>JavaScript Password Meter</title>
<script>
window.addEventListener('load', function() {
var password = document.getElementById("pwd");
password.addEventListener('change', function() {

// Reset if password length is zero
if (password.length === 0) {
document.getElementById("progresslabel").innerHTML = "";
document.getElementById("progress").value = "0";
return;
}
// Password requirements
var match = new Array();
match.push("[$@$!%*#?&]"); // Special Chars
match.push("[A-Z]"); // Uppercase
match.push("[0-9]"); // Numbers
match.push("[a-z]"); // Lowercase

// Check progress
var prog = 0;
for (var i = 0; i < match.length; i++) {
if (new RegExp(match[i]).test(password)) {
prog++;
}
}
//Length must be at least 8 chars
if(prog > 2 && password.length > 7){
prog++;
}
// Display it
var progress = "";
var strength = "";
switch (prog) {
case 0:
case 1:
case 2:
strength = "25%";
progress = "25";
break;
case 3:
strength = "50%";
progress = "50";
break;
case 4:
strength = "75%";
progress = "75";
break;
case 5:
strength = "100% - Password strength is good";
progress = "100";
break;
}
document.getElementById("progresslabel").innerHTML = strength;
document.getElementById("progress").value = progress;

});
});
</script>
</head>
<body>
<form>
<div>
<label for="pwd">Password:</label>
<input type="text" id="pwd">
<progress id="progress" value="0" max="100">70</progress>
<span id="progresslabel"></span></div>
</form>
</body>
</html>

最佳答案

几个问题:

  1. 您应该监听 keyup 方法而不是 change 事件,以便在密码更改时重新评估强度(change仅在模糊时触发)
  2. password 引用 pwd 元素,但您的代码将其视为输入值 - 我在函数中添加了一个 pwd 变量,它是password 元素的值
  3. 字符测试可以简化 - 我使用的 reduce 在功能上与您的代码等效

var password = document.getElementById("pwd");
password.addEventListener('keyup', function() {

var pwd = password.value

// Reset if password length is zero
if (pwd.length === 0) {
document.getElementById("progresslabel").innerHTML = "";
document.getElementById("progress").value = "0";
return;
}

// Check progress
var prog = [/[$@$!%*#?&]/, /[A-Z]/, /[0-9]/, /[a-z]/]
.reduce((memo, test) => memo + test.test(pwd), 0);

// Length must be at least 8 chars
if(prog > 2 && pwd.length > 7){
prog++;
}

// Display it
var progress = "";
var strength = "";
switch (prog) {
case 0:
case 1:
case 2:
strength = "25%";
progress = "25";
break;
case 3:
strength = "50%";
progress = "50";
break;
case 4:
strength = "75%";
progress = "75";
break;
case 5:
strength = "100% - Password strength is good";
progress = "100";
break;
}
document.getElementById("progresslabel").innerHTML = strength;
document.getElementById("progress").value = progress;

});
<form>
<div>
<label for="pwd">Password:</label>
<input type="text" id="pwd">
<progress id="progress" value="0" max="100">70</progress>
<span id="progresslabel"></span>
</div>
</form>

关于Javascript - 简单密码强度指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53966456/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com