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 相关文章推荐
jQuery 中关于CSS操作部分使用说明
Jun 10 Javascript
jQuery AJAX 调用WebService实现代码
Mar 24 Javascript
jquery实现的一个导航滚动效果具体代码
May 27 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
Dec 05 Javascript
Seajs是什么及sea.js 由来,特点以及优势
Oct 13 Javascript
Vue 2中ref属性的使用方法及注意事项
Jun 12 Javascript
Easyui在treegrid添加控件的实现方法
Jun 23 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
Dec 20 Javascript
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
判断js数据类型的函数实例详解
May 23 Javascript
vue计算属性无法监听到数组内部变化的解决方案
Nov 06 Javascript
Node.js API详解之 string_decoder用法实例分析
Apr 29 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
木翼下载系统中说明的PHP安全配置方法
2007/06/16 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
PHP多线程类及用法实例
2014/12/03 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
彻底学会Angular.js中的transclusion
2017/03/12 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
发布Angular应用至生产环境的方法
2018/12/10 Javascript
js实现聊天对话框
2020/02/08 Javascript
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
Python如何使用字符打印照片
2020/01/03 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
逻辑链路控制协议
2016/10/01 面试题
PyQt QMainWindow的使用示例
2021/03/24 Python
毕业生护理专业个人求职信范文
2014/01/04 职场文书
上班睡觉检讨书
2014/01/09 职场文书
美容院营销方案
2014/03/05 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
第一军规观后感
2015/06/12 职场文书
生产实习心得体会范文
2016/01/22 职场文书