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 相关文章推荐
Display SQL Server Version Information
Jun 21 Javascript
JS 页面计时器示例代码
Oct 28 Javascript
写JQuery插件的基本知识
Nov 25 Javascript
js 验证身份证信息有效性
Mar 28 Javascript
JavaScript判断变量是对象还是数组的方法
Aug 28 Javascript
javascript中的this详解
Dec 08 Javascript
利用node.js制作命令行工具方法教程(一)
Jun 22 Javascript
解决Vue页面固定滚动位置的处理办法
Jul 13 Javascript
vue中SPA单页面应用程序详解
Nov 07 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
Mar 02 Javascript
浅析Vue下的components模板使用及应用
Nov 27 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
Mar 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 七大优势分析
2009/06/23 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
js清除浏览器缓存的几种方法
2017/03/15 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
JS伪继承prototype实现方法示例
2018/06/20 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
python数字图像处理之高级滤波代码详解
2017/11/23 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
Django在Model保存前记录日志实例
2020/05/14 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
大学生活学习的自我评价
2013/12/03 职场文书
演讲稿格式范文
2014/05/19 职场文书
遗嘱范文
2015/08/07 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers