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 相关文章推荐
JavaScript For Beginners(转载)
Jan 05 Javascript
Ext grid 添加右击菜单
Nov 26 Javascript
js控制页面控件隐藏显示的两种方法介绍
Oct 09 Javascript
JavaScript声明变量名的语法规则
Jul 10 Javascript
jQuery遍历DOM元素与节点方法详解
Apr 14 Javascript
jQuery代码实现表格中点击相应行变色功能
May 09 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
Oct 01 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
Oct 08 Javascript
基于javascript实现贪吃蛇小游戏
Nov 25 Javascript
JavaScript的console命令使用实例
Dec 03 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
May 09 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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
附件名前加网站名
2008/03/23 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
基于Jquery的温度计动画效果
2010/06/18 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
jquery原理以及学习技巧介绍
2015/11/11 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
Python实现从订阅源下载图片的方法
2015/03/11 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
python 检查文件mime类型的方法
2018/12/08 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
2014年医院后勤工作总结
2014/12/06 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
喋血孤城观后感
2015/06/08 职场文书
Python实现8种常用抽样方法
2021/06/27 Python
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android