js密码强度实时检测代码


Posted in Javascript onMarch 02, 2016

密码强度的判断, 在注册网站用户的时候, 是一个必须要做的事情, 不同的网站, 实现的方式是不一样的.
密码的判断, 其实也就是一个表单验证的其中一项. 那我们来实现这么一个简单的操作.

首先做一个简单的密码输入框和一个显示密码强度的进度条. 整个整体由vali_pass盒子涵盖. 这个盒子包含了标题, 密码框. 再个就是强度进度条.

<div class="vali_pass">
 <h3>简单的密码强度检测</h3>
 <input type="password" name="pass">
 <div class="vali_pass_progress">
  <span class="vali_pass_inner_progress"></span>
 </div>
</div>

这样我们再来用CSS来美化一下

.vali_pass {
 width: 350px;
 margin: 0 auto;
 padding: 10px;
 border: #eee 1px solid;
 text-align: center;
}
.vali_pass input {
 width: 96%;
 display: block;
 margin: 0;
 padding: 5px;
 font-size: 14px;
 line-height: 20px;
}
.vali_pass_progress {
 margin-top: 10px;
 background-color: #efefef;
 height: 10px;
 border-radius: 5px;
}
.vali_pass_inner_progress {
 display: block;
 height: 100%;
 background-color: transparent;
 border-radius: 5px;
 width: 100%;
}

这时候我们需要考虑的是, 这个进度条可能存在几种状态, 前度低的时候显示什么状态, 中程度的时候显示什么状态, 高程度的时候,显示什么状态.
OK, 我们这里用的时候进度条内部盒子的宽度,背景色的控制. 设置为三个样式

.error {
 background-color: #ff3300;
}
.middle {
 background-color: gold;
}
.strong {
 background-color: green;
}

这样HTML结构,CSS美化也就完成. 下面我们来做JS的监听.

首先少不了的是给密码输入框, 加入文本输入监听

ele_pass.onkeyup = function () {...}

对密码的判断, 就得在这个事件内做处理. 不过在处理之前, 我们得初始化一些数据. 比如进行密码判断的正则表达式.

var regxs = [];
regxs.push(/[^a-zA-Z0-9_]/g);
regxs.push(/[a-zA-Z]/g);
regxs.push(/[0-9]/g);

我这里使用了三个正则来依次判断密码的匹配度. 数据初始化完成后, 处理onkeyup事件. 首先是获取这个输入框的值, 然后其长度. 长度我们这里控制至少6个字符. sec作为安全度的一个增加值. 每次匹配正则里的表达式, 就sec++, 说明密码的安全度.然后换算成密码的100之内数值. 这个值可以方便用在控制内部进度条的宽度.

ele_pass.onkeyup = function () {
 var val = this.value;
 var len = val.length;
 var sec = 0;
 if (len >= 6) { // 至少六个字符
  for (var i = 0; i < regxs.length; i++) {
   if (val.match(regxs[i])) {
    sec++;
   }
  }
 }
 var result = (sec / regxs.length) * 100;
 ele_progress.style.width = result + "%";
}

进度条宽度控制好后, 我们暂时是看不出进度条的效果的, 看前面的CSS代码. 这个默认的背景是透明的. 那下面我们还得控制不同安全值, 他的背景颜色的控制.下面的代码就是用来控制其背景色的.

if(result > 0 && result <= 50){
 ele_progress.setAttribute("class",begin_classname + " error");
}else if (result > 50 && result < 100) {
 ele_progress.setAttribute("class",begin_classname + " middle");
} else if (result == 100) {
 ele_progress.setAttribute("class",begin_classname + " strong");
}

最后的JS代码:

var ele_pass = document.getElementsByTagName("input")[0];
var ele_progress = document.getElementsByClassName("vali_pass_inner_progress")[0];
var begin_classname = ele_progress.className;
var regxs = [];
regxs.push(/[^a-zA-Z0-9_]/g);
regxs.push(/[a-zA-Z]/g);
regxs.push(/[0-9]/g);

ele_pass.onkeyup = function () {
 var val = this.value;
 var len = val.length;
 var sec = 0;
 if (len >= 6) { // 至少六个字符
  for (var i = 0; i < regxs.length; i++) {
   if (val.match(regxs[i])) {
    sec++;
   }
  }
 }
 var result = (sec / regxs.length) * 100;
 ele_progress.style.width = result + "%";
 if(result > 0 && result <= 50){
  ele_progress.setAttribute("class",begin_classname + " error");
 }else if (result > 50 && result < 100) {
  ele_progress.setAttribute("class",begin_classname + " middle");
 } else if (result == 100) {
  ele_progress.setAttribute("class",begin_classname + " strong");
 }

}

那我们的效果也来操作一下看看:

js密码强度实时检测代码

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
JS window.opener返回父页面的应用
Oct 24 Javascript
获取焦点时,利用js定时器设定时间执行动作
Apr 02 Javascript
js实现一个省市区三级联动选择框代码分享
Mar 06 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
Apr 04 Javascript
JavaScript中继承用法实例分析
May 16 Javascript
JQuery包裹DOM节点的方法
Jun 11 Javascript
JavaScript简单实现鼠标移动切换图片的方法
Feb 23 Javascript
详解vue2.0脚手架的webpack 配置文件分析
May 27 Javascript
js编写简单的聊天室功能
Aug 17 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
Oct 24 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
Nov 05 Javascript
JS数组索引检测中的数据类型问题详解
Jan 11 Javascript
js+css实现回到顶部按钮(back to top)
Mar 02 #Javascript
Node.js中JavaScript操作MySQL的常用方法整理
Mar 01 #Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
Mar 01 #Javascript
jquery自定义右键菜单、全选、不连续选择
Mar 01 #Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
Mar 01 #Javascript
详解Wondows下Node.js使用MongoDB的环境配置
Mar 01 #Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
Mar 01 #Javascript
You might like
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
vue请求数据的三种方式
2020/03/04 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
Python实现动态循环输出文字功能
2020/05/07 Python
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
信息部岗位职责
2013/11/12 职场文书
竞选班长演讲稿
2013/12/30 职场文书
聘用意向书范本
2014/04/01 职场文书
课外访万家心得体会
2014/09/03 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
岳庙导游词
2015/02/04 职场文书
2016三八妇女节校园广播稿
2015/12/17 职场文书
Python实现拼音转换
2021/06/07 Python
Python实现滑雪小游戏
2021/09/25 Python
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python