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 相关文章推荐
jQuery使用手册之三 CSS操作
Mar 24 Javascript
jquery+css+ul模拟列表菜单具体实现思路
Apr 15 Javascript
JS中prototype关键字的功能介绍及使用示例
Jul 21 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
Oct 17 Javascript
JS实现slide文字框缩放伸展效果代码
Nov 05 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
Oct 12 Javascript
JS禁止查看网页源代码的实现方法
Oct 12 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
js遮罩效果制作弹出注册界面效果
Jan 25 Javascript
基于js中this和event 的区别(详解)
Oct 24 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
Sep 14 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
Feb 14 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
师范生自荐信范文
2013/10/06 职场文书
客房主管岗位职责
2013/12/09 职场文书
师德师风建设方案
2014/05/08 职场文书
老公出轨后的保证书
2015/05/08 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书
MySQL 如何分析查询性能
2021/05/12 MySQL
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python
mysql序号rownum行号实现方式
2022/12/24 MySQL