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 相关文章推荐
JavaScript prototype对象的属性说明
Mar 13 Javascript
WEB 浏览器兼容 推荐收藏
May 14 Javascript
js获取url传值的方法
Dec 18 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
Nov 22 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
Dec 26 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
Jun 12 Javascript
jQuery实现下拉菜单的实例代码
Jun 19 jQuery
使用jQuery实现购物车结算功能
Aug 15 jQuery
关于vue面试题汇总
Mar 20 Javascript
javascript性能优化之分时函数的介绍
Mar 28 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
Nov 14 Javascript
Javascript异步编程async实现过程详解
Apr 02 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
解析CI的AJAX分页 另类实现方法
2013/06/27 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
Django密码系统实现过程详解
2019/07/19 Python
python如何写出表白程序
2020/06/01 Python
python实现登录与注册系统
2020/11/30 Python
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
表扬信格式
2014/01/12 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL