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的IE和火狐的兼容性注意事项
Mar 17 Javascript
jquery.tmpl JQuery模板插件
Oct 10 Javascript
JavaScript中最简洁的编码html字符串的方法
Oct 11 Javascript
jQuery实现鼠标滑过点击事件音效试听
Aug 31 Javascript
浅谈jQuery为哪般去掉了浏览器检测
Aug 29 Javascript
Html5+jQuery+CSS制作相册小记录
Dec 30 Javascript
微信小程序 用户数据解密详细介绍
Jan 09 Javascript
jQuery is not defined 错误原因与解决方法小结
Mar 19 Javascript
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
如何解决React官方脚手架不支持Less的问题(小结)
Sep 12 Javascript
JS实现盒子拖拽效果
Feb 06 Javascript
vue使用watch监听属性变化
Apr 30 Vue.js
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入门学习知识点三 PHP上传
2011/07/14 PHP
PHP可变函数学习小结
2015/11/29 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
python中Genarator函数用法分析
2015/04/08 Python
Python文件操作基础流程解析
2020/03/19 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
python处理写入数据代码讲解
2020/10/22 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
中专生的个人自我评价
2013/12/11 职场文书
2014年自我评价
2014/01/04 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
爱我中华教学反思
2014/04/28 职场文书
入党综合考察材料
2014/06/02 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
经理岗位职责
2015/02/02 职场文书
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL