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变量
May 25 Javascript
offsetHeight在OnLoad中获取为0的现象
Jul 22 Javascript
浅谈javascript回调函数
Dec 07 Javascript
js实现拖拽效果
Feb 12 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
分享javascript、jquery实用代码段
Oct 20 Javascript
探索Vue.js component内容实现
Nov 03 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
Nov 09 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
Feb 08 Javascript
vue2.0移除或更改的一些东西(移除index key)
Aug 28 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
Oct 17 Javascript
基于JavaScript中标识符的命名规则介绍
Jan 06 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 MYSQL 数据备份类
2009/06/19 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
Javascript this 的一些学习总结
2012/08/31 Javascript
JS 控件事件小结
2012/10/31 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
js css自定义分页效果
2017/02/24 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
Python中itertools模块用法详解
2014/09/25 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
python新手学习使用库
2020/06/11 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
不用游标的SQL语句有哪些
2012/09/07 面试题
护理不良事件检讨书
2014/02/06 职场文书
高中生职业规划范文
2014/03/09 职场文书
会议主持人开场白台词
2015/05/28 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
调解协议书范本
2016/03/21 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android