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 相关文章推荐
ExtJS 2.0实用简明教程 之获得ExtJS
Apr 29 Javascript
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
jQuery随便控制任意div隐藏的方法
Jun 28 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
Sep 29 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
Mar 28 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
Mar 29 Javascript
vue进行图片的预加载watch用法实例讲解
Feb 07 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
Sep 07 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
Sep 30 Javascript
如何通过Proxy实现JSBridge模块化封装
Oct 22 Javascript
JavaScript函数柯里化
Nov 07 Javascript
JS前端轻量fabric.js系列之画布初始化
Aug 05 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 调试利器debug_print_backtrace()
2012/07/23 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
php 注册时输入信息验证器的实现详解
2013/07/05 PHP
php生成验证码函数
2015/10/20 PHP
详解php实现页面静态化原理
2017/06/21 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
jquery延迟对象解析
2016/10/26 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
python sort、sorted高级排序技巧
2014/11/21 Python
Python中property属性实例解析
2018/02/10 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
python文件路径操作方法总结
2020/12/21 Python
Python里面如何拷贝一个对象
2014/02/17 面试题
青春励志演讲稿
2014/04/29 职场文书
答谢词范文
2015/01/05 职场文书
质量承诺书格式范文
2015/04/28 职场文书
好员工观后感
2015/06/17 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
公证书
2019/04/17 职场文书
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL