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的对话框详解与参数
Mar 08 Javascript
javascript 去字符串空格终极版(支持utf8)
Nov 14 Javascript
JSQL 批量图片切换的实现代码
May 05 Javascript
JS如何将UTC格式时间转本地格式
Sep 04 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
Oct 01 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
Nov 18 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
Oct 27 Javascript
JavaScript转换与解析JSON方法实例详解
Nov 24 Javascript
javascript滚轮事件基础实例讲解(37)
Feb 14 Javascript
Vue异步组件处理路由组件加载状态的解决方案
Sep 07 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
JS实现的获取银行卡号归属地及银行卡类型操作示例
Jan 08 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 第二节 数据类型之数值型
2012/04/28 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
php中in_array函数用法分析
2014/11/15 PHP
PHP7.0版本备注
2015/07/23 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
Hutia 的 JS 代码集
2006/10/24 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
vue-router实现组件间的跳转(参数传递)
2017/11/07 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python中获取对象信息的方法
2015/04/27 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
python 内置函数filter
2017/06/01 Python
python随机取list中的元素方法
2018/04/08 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
测绘工程专业个人自我评价
2013/12/01 职场文书
仓库管理计划书
2014/05/04 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
党员自我评价范文2015
2015/03/03 职场文书
python flappy bird小游戏分步实现流程
2022/02/15 Python