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点击弹出下拉菜单效果实例
Aug 12 Javascript
Javascript实现返回上一页面并刷新的小例子
Dec 11 Javascript
在javascript中实现函数数组的方法
Dec 25 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
Jan 02 Javascript
jquery控制display属性为none或block
Mar 31 Javascript
jQuery 删除/替换DOM元素的几种方式
May 20 Javascript
JS设置cookie、读取cookie
Feb 24 Javascript
AngularJS应用开发思维之依赖注入3
Aug 19 Javascript
javascript 正则表达式去空行方法
Jan 24 Javascript
JavaScript中常见的八个陷阱总结
Jun 28 Javascript
记React connect的几种写法(小结)
Sep 18 Javascript
浅谈在Vue.js中如何实现时间转换指令
Jan 06 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
咖啡历史、消费和行业趋势
2021/03/03 咖啡文化
基于mysql的论坛(3)
2006/10/09 PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
PHP-redis中文文档介绍
2013/02/07 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
php简单统计中文个数的方法
2016/09/30 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
在Python中编写数据库模块的教程
2015/04/29 Python
python3 实现的人人影视网站自动签到
2016/06/19 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
django 类视图的使用方法详解
2019/07/24 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
工程造价专业大学生自荐信
2013/10/01 职场文书
光电信息专业应届生求职信
2013/10/07 职场文书
市三好学生主要事迹
2014/01/28 职场文书
财务管理专业求职信
2014/06/11 职场文书
预防传染病方案
2014/06/14 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书