HTML5不提供密码强度检测,须用JavaScript的oninput事件实时监听并分层验证规则;提示应置于input后的span中,按满足项数标记强/中/弱,并兼顾色觉障碍与安全策略要求。
HTML5 本身不提供密码强度计算或动态提示功能,input[type="password"] 只负责隐藏输入内容,强度检测必须靠 JavaScript 实现。
用 oninput 实时监听密码输入
别用 onchange 或 onblur——它们只在失焦后触发,无法做到“边打边提示”。oninput 在每次输入、粘贴、删除时都触发,是唯一可靠选择。
- 兼容性好,所有现代浏览器(含 iOS Safari)都支持
- 避免用
keyup:无法捕获右键粘贴、拖拽输入、语音输入等操作 - 建议节流(如 100ms 延迟),防止高频触发影响性能
用正则分层判断强度等级
别依赖单一“密码得分”算法,用户看不懂。按实际安全要求拆解为可感知的规则项更有效:
-
/[a-z]/→ 含小写字母 -
/[A-Z]/→ 含大写字母 -
/[0-9]/→ 含数字 -
/[^a-zA-Z0-9]/→ 含特殊字符(注意:空格也匹配此式) -
.length >= 8→ 长度达标
每满足一项,就标记为 ✅;全部满足再显示“强”;缺 1–2 项标“中”,缺 3 项以上标“弱”。比模糊的“65分”直观得多。