JavaScript 实现密码强度实时检测与可视化展示
作者:函数茶馆时间:2026-10-23 23:17:17浏览:334
本文提供一段完整的 JavaScript 代码,用于在前端实现密码强度的实时检测与可视化展示。通过 CharMode、bitTotal 和 checkStrong 等函数,系统能自动识别密码中的数字、大小写字母及特殊字符,并根据组合模式计算强度等级。配合 HTML 表单与 CSS 样式,用户输入时即可看到弱、中、强三种颜色的动态反馈,有效提升用户体验与安全性。
JavaScript 密码强度检测完整代码示例
具体实现代码如下所示:
<script type="text/javascript">
// CharMode 函数定义
// 该函数用于判断单个字符所属的类型类别。
function CharMode(iN){
if (iN>=48 && iN <=57) // 判断是否为数字
return 1;
if (iN>=65 && iN <=90) // 判断是否为大写字母
return 2;
if (iN>=97 && iN <=122) // 判断是否为小写字母
return 4;
else
return 8; // 若不符合上述条件,则视为特殊字符
}
// bitTotal 函数定义
// 该函数用于统计当前密码中包含的不同字符类型数量。
function bitTotal(num){
modes=0;
for (i=0;i<4;i++){
if (num & 1) modes++;
num>>>=1;
}
return modes;
}
// checkStrong 函数定义
// 该函数用于返回最终确定的密码强度等级。
function checkStrong(sPW){
if (sPW.length<=4)
return 0; // 若密码长度小于等于4,判定为强度不足
Modes=0;
for (i=0;i<sPW.length;i++){
// 遍历密码字符串中的每个字符,获取其类型并累加到 Modes 变量中。
Modes|=CharMode(sPW.charCodeAt(i));
}
return bitTotal(Modes);
}
// pwStrength 函数定义
// 当用户输入结束或输入框失去焦点时,根据计算出的强度等级显示对应的颜色条。
function pwStrength(pwd){
O_color="#eeeeee";
L_color="#FF0000";
M_color="#FF9900";
H_color="#33CC00";
if (pwd==null||pwd==''){
Lcolor=Mcolor=Hcolor=O_color;
}
else{
S_level=checkStrong(pwd);
switch(S_level) {
case 0:
Lcolor=Mcolor=Hcolor=O_color;
case 1:
Lcolor=L_color;
Mcolor=Hcolor=O_color;
break;
case 2:
Lcolor=Mcolor=M_color;
Hcolor=O_color;
break;
default:
Lcolor=Mcolor=Hcolor=H_color;
}
}
document.getElementById("strength_L").style.background=Lcolor;
document.getElementById("strength_M").style.background=Mcolor;
document.getElementById("strength_H").style.background=Hcolor;
return;
}
</script>
<form name=form1 action="" >
输入密码:<input type=password size=10 onKeyUp=pwStrength(this.value) onBlur=pwStrength(this.value)>
<br>密码强度:
<table width="217" border="1" cellspacing="0" cellpadding="1" bordercolor="#cccccc" height="23" style='display:inline'>
<tr align="center" bgcolor="#eeeeee">
<td width="33%" id="strength_L">弱</td>
<td width="33%" id="strength_M">中</td>
<td width="33%" id="strength_H">强</td>
</tr>
</table>
</form>作者最新文章
JS大数值转字符串出现科学计数法怎么办
2026-11-05 17:09:21
JS split切割后出现空字符串怎么过滤
2026-11-05 16:00:30
在 React 或 Vue 项目中封装使用 JS 节流防抖
2026-11-05 15:27:29
JavaScript中怎么将带小数的字符串转为整数?
2026-11-05 14:32:38
怎么用JavaScript策略模式重构电商促销计算逻辑?
2026-11-05 14:01:09
