JavaScript动态检验密码强度的实现方法


Posted in Javascript onNovember 09, 2016

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

JavaScript动态检验密码强度的实现方法

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

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

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

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

<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,来控制标签的样式,使其感觉漂亮一点:

<style type="text/css">
/*用于修饰密码强度条外边框div*/
.pwdStrongth{
border:solid 1px #000000;
border-radius:5px;
height:15px;
width:150px;}
/*用于设置span标签的初始样式*/
.cinnerprogress{ 
display: block;
height: 100%;
background-color:transparent;
border-radius: 5px;
width: 100%;
}
/*下面四个将用于设置span标签在不同密码强度的样式*/
.strengthLv1{ 
display: block;
height: 100%;
border-radius: 5px;
background:red;width:25%;}
.strengthLv2{
display: block;
height: 100%;
border-radius: 5px;
background:orange;width:50%;}
.strengthLv3{
display: block;
height: 100%;
border-radius: 5px;
background:#09F;width:75%;}
.strengthLv4{
display: block;
height: 100%;
border-radius: 5px;
background:green;width:100%;}
</style>

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

function pwdComplex()//用于判断密码强度的
{
var pwdobj=document.getElementById("password"); //获取密码输入框对象
var pwdTip=document.getElementById("pwdTip");//获取密码提示文字对象
var pwdprogress=document.getElementById("innerprogress"); //获取span标签对象
var strongthTip=document.getElementById("strongthTip");//获取密码强度提示文字的对象
var regxs = new Array();//定义一个数组用于存放不同的正则表达式
regxs[0]=/[^a-zA-Z0-9_]/g;
regxs[1]=/[a-z]/g;
regxs[2]=/[0-9]/g;
regxs[3]=/[A-Z]/g;
var val = pwdobj.value;//获取用户输入的密码
var len = val.length;//获取用户输入的密码长度
var sec = 0; //定义一个变量用于存放密码强度
if (len >= 6) //用于判断用户输入的密码强度
{ // 至少六个字符
for (var i = 0; i < regxs.length; i++) //遍历所有正则表达式,检测用户输入的密码符合哪些正则表达式,如果符合则强度+1
{
if (val.match(regxs[i])) 
{
sec++;
}
}
}
if(sec==0) //通过不同的密码强度调用不同的样式
{
strongthTip.innerText="";
//setAttribute("class", "className")中class是指改变class这个属性,所以要带引号,className是span标签的类名,也是对应的样式名
pwdprogress.setAttribute("class","cinnerprogress");
}
else if(sec==1)
{
strongthTip.innerText="强度:弱";
strongthTip.style.color="red";
pwdprogress.setAttribute("class","strengthLv1");
}
else if(sec==2)
{
strongthTip.innerText="强度:中"; 
strongthTip.style.color="orange";
pwdprogress.setAttribute("class","strengthLv2");
}
else if(sec==3)
{
strongthTip.innerText="强度:强"; 
strongthTip.style.color="#09F";
pwdprogress.setAttribute("class","strengthLv3");
}
else if(sec==4)
{
strongthTip.innerText="强度:超强"; 
strongthTip.style.color="green";
pwdprogress.setAttribute("class","strengthLv4");
}
}

以上所述是小编给大家介绍的JavaScript动态检验密码强度的实现方法,实现一个模拟后台数据登入的效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js滚动条多种样式,推荐
Feb 05 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
Sep 01 Javascript
JS实现生成会变大变小的圆环实例
Aug 05 Javascript
jquery实现左右滑动菜单效果代码
Aug 27 Javascript
js HTML5上传示例代码完整版
Oct 10 Javascript
在使用JSON格式处理数据时应该注意的问题小结
May 20 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
Jul 24 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
Sep 30 Javascript
elementUI 设置input的只读或禁用的方法
Oct 30 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
May 19 jQuery
vue使用axios实现excel文件下载的功能
Jul 16 Javascript
JavaScript经典案例之简易计算器
Aug 24 Javascript
jquery获取easyui日期控件的值实现方法
Nov 09 #Javascript
给easyui的datebox控件添加清空按钮的实现方法
Nov 09 #Javascript
给easyui datebox扩展一个清空的实例
Nov 09 #Javascript
JS刷新父窗口的几种方式小结(推荐)
Nov 09 #Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
Nov 09 #Javascript
jquery easyui validatebox remote的使用详解
Nov 09 #Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
Nov 09 #Javascript
You might like
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
javascript自执行函数
2017/02/10 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
python线程锁(thread)学习示例
2013/12/04 Python
使用cx_freeze把python打包exe示例
2014/01/24 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
大学生自我鉴定范文模板
2014/01/21 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
夏季药店促销方案
2014/08/22 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
电工实训报告总结
2014/11/05 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python