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 相关文章推荐
Prototype使用指南之hash.js
Jan 10 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
Jan 13 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
Nov 09 Javascript
在网页中插入百度地图的步骤详解
Dec 02 Javascript
javascript中setAttribute兼容性用法分析
Dec 12 Javascript
微信小程序中input标签详解及简单实例
May 18 Javascript
最基础的vue.js双向绑定操作
Aug 23 Javascript
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
Vue项目中使用better-scroll实现一个轮播图自动播放功能
Dec 03 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
Sep 06 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
Sep 16 Javascript
微信小程序实现时间戳格式转换
Jul 20 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
中国的第一台收音机
2021/03/01 无线电
PHP多线程抓取网页实现代码
2010/07/22 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
php中cookie的使用方法
2014/03/29 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
表单元素事件 (Form Element Events)
2009/07/17 Javascript
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
React props和state属性的具体使用方法
2018/04/12 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
vuex入门最详细整理
2020/03/04 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
社区消防工作实施方案
2014/03/21 职场文书
企业新年寄语
2014/04/04 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python