利用JavaScript来实现用动态检验密码强度

简介: 平时我们会在某些网站的注册页面或者更改密码的页面发现当我们输入密码时,会有一个类似于进度条的长条进行提示用户输入的密码强度。如下图:我看到有些人用几张不同的图片来替换,这样似乎可以,但是不太好。所以我通过其他方式实现。

平时我们会在某些网站的注册页面或者更改密码的页面发现当我们输入密码时,会有一个类似于进度条的长条进行提示用户输入的密码强度。如下图:

我看到有些人用几张不同的图片来替换,这样似乎可以,但是不太好。所以我通过其他方式实现。

实质上这是根据用户输入的不同密码强度来改变 颜色区域的长度。

密码强度这个横条实质是一个div,其他标记也可以,div里面有一个span标记,我就是通过改变span的长度和颜色来表现密码的强度的。原理很简单,但是在操作过程中,可能会遇到一些问题很头疼。

1.先在html页面里面定义一个输入框用于输入密码,一个一个div,在div里面放一个span标签并且设置相应的属性,type,name,value,class,id等

1 <font color="#FF0000">*</font>密码:<input type="text" name="password" id="password" value="请输入密码"  onfocus=" passwordClear()" onblur="pwdComplex(),passwordValidate()" onkeyup="pwdComplex()" /></td><td><font id="pwdTip">不少于6位字符</font><br/>
2 密码强度:<div class="pwdStrongth"><span class="cinnerprogress" id="innerprogress"></span></div><font id="strongthTip"></font>

2.给标签设置相应的css,来控制标签的样式,使其感觉漂亮一点:

 1 <style type="text/css">
 2     /*用于修饰密码强度条外边框div*/
 3     .pwdStrongth{
 4         border:solid 1px #000000;
 5         border-radius:5px;
 6         height:15px;
 7         width:150px;}
 8     /*用于设置span标签的初始样式*/
 9     .cinnerprogress{ 
10         display: block;
11           height: 100%;
12          background-color:transparent;
13           border-radius: 5px;
14           width: 100%;
15         }
16     /*下面四个将用于设置span标签在不同密码强度的样式*/
17     .strengthLv1{  
18         display: block;
19           height: 100%;
20         border-radius: 5px;
21         background:red;width:25%;}
22     .strengthLv2{
23         display: block;
24           height: 100%;
25         border-radius: 5px;
26         background:orange;width:50%;}
27     .strengthLv3{
28         display: block;
29           height: 100%;
30         border-radius: 5px;
31         background:#09F;width:75%;}
32     .strengthLv4{
33         display: block;
34           height: 100%;
35         border-radius: 5px;
36         background:green;width:100%;}
37 </style>

3.写相应的JavaScript方法通过检测用户输入的密码强度来调用不同的样式来表现密码强度,密码强度的规则可以自己随意定义,只需在密码输入框的onblur(失去焦点)事件和onkeyup(按下键盘上来之后)事件调用下面的方法即可:

 1 function pwdComplex()//用于判断密码强度的
 2     {
 3         var pwdobj=document.getElementById("password"); //获取密码输入框对象
 4         var pwdTip=document.getElementById("pwdTip");//获取密码提示文字对象
 5         var pwdprogress=document.getElementById("innerprogress"); //获取span标签对象
 6         var strongthTip=document.getElementById("strongthTip");//获取密码强度提示文字的对象
 7         var regxs = new Array();//定义一个数组用于存放不同的正则表达式
 8         regxs[0]=/[^a-zA-Z0-9_]/g;
 9         regxs[1]=/[a-z]/g;
10         regxs[2]=/[0-9]/g;
11         regxs[3]=/[A-Z]/g;
12         var val = pwdobj.value;//获取用户输入的密码
13         var len = val.length;//获取用户输入的密码长度
14         var sec = 0;         //定义一个变量用于存放密码强度
15         if (len >= 6) //用于判断用户输入的密码强度
16         { // 至少六个字符
17             for (var i = 0; i < regxs.length; i++)  //遍历所有正则表达式,检测用户输入的密码符合哪些正则表达式,如果符合则强度+1
18             {
19                 if (val.match(regxs[i])) 
20                 {
21                     sec++;
22                 }
23             }
24         }
25         if(sec==0) //通过不同的密码强度调用不同的样式
26         {
27             strongthTip.innerText="";
28              //setAttribute("class", "className")中class是指改变class这个属性,所以要带引号,className是span标签的类名,也是对应的样式名
29             pwdprogress.setAttribute("class","cinnerprogress");
30         }
31         else if(sec==1)
32         {
33             strongthTip.innerText="强度:弱";
34             strongthTip.style.color="red";
35             pwdprogress.setAttribute("class","strengthLv1");
36                 
37         }
38         else if(sec==2)
39         {
40             strongthTip.innerText="强度:中";    
41             strongthTip.style.color="orange";
42             pwdprogress.setAttribute("class","strengthLv2");
43             
44         }
45         else if(sec==3)
46         {
47             strongthTip.innerText="强度:强";    
48             strongthTip.style.color="#09F";
49             pwdprogress.setAttribute("class","strengthLv3");
50             
51         }
52         else if(sec==4)
53         {
54             strongthTip.innerText="强度:超强";    
55             strongthTip.style.color="green";
56             pwdprogress.setAttribute("class","strengthLv4");
57             
58         }
59     }

以上是完整的代码,供大家学习和参考,若有错误或不足,请大家多多指教!!!

目录
相关文章
|
2月前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
2月前
|
前端开发 JavaScript 安全
前端JS实现密码校验键盘横竖、26字母、相同字母、相同数字、密码包含用户名、数字 字母不能连续 不能相同三个、不能横向 竖向 连续三个 包含字符、不能有中文符号
该 JavaScript 代码实现了一个严格的密码校验功能,确保密码满足多种安全要求,包括长度、字符类型、不包含中文及特殊字符、不与用户名相似等。通过多个辅助函数,如 `validateFormat` 检查密码格式,`isHasChinaCharFun` 检测中文符号,`getCharAll` 生成键盘组合,以及 `checkPasswordFun` 综合验证密码的有效性和安全性。此工具对于提高用户账户的安全性非常有用。
72 0
|
4月前
|
前端开发 JavaScript 数据安全/隐私保护
前端JS正则校验密码之3种实现方式
这篇文章展示了三种使用JavaScript正则表达式来校验密码的方法,密码需要满足包含大写字母、小写字母、数字及特殊字符,并在8到16位之间,同时提供了示例代码和实现效果。
155 1
前端JS正则校验密码之3种实现方式
|
4月前
|
JavaScript 前端开发 API
vue中将验证表单输入框的方法写在一个js文件中(表达式验证邮箱、身份证、号码、两次输入的密码是否一致)
这篇文章介绍了如何在Vue框架中将表单输入验证逻辑封装到一个JavaScript文件中,并通过正则表达式验证邮箱、身份证、手机号等信息,同时确保两次密码输入的一致性。
|
5月前
|
JavaScript
JS代码动态打印404页面源码
源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面
32 0
JS代码动态打印404页面源码
|
5月前
|
JavaScript
js好用的动态分页插件
js好用的动态分页插件是一款简单的分页样式插件,支持样式类型,当前页,每页显示数量,按钮数量,总条数,上一页文字,下一页文字,输入框跳转等功能。
45 1
|
5月前
|
JavaScript 前端开发
vue 模拟随机变速的动态打字特效【支持多行文本】(含css实现闪烁光标,js动态改变setInterval定时器的时间间隔)
vue 模拟随机变速的动态打字特效【支持多行文本】(含css实现闪烁光标,js动态改变setInterval定时器的时间间隔)
99 1
|
6月前
|
前端开发 JavaScript
使用JavaScript动态更改元素的CSS属性
【6月更文挑战第29天】使用JavaScript动态更改元素的CSS属性
87 3
|
5月前
|
JavaScript 前端开发
前端 JS 经典:动态执行 JS
前端 JS 经典:动态执行 JS
49 0
|
6月前
|
算法 JavaScript 安全
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
60 0