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 each()小议
Mar 18 Javascript
jQuery 幻灯片插件(带缩略图功能)
Jan 24 Javascript
js 控制页面跳转的5种方法
Sep 09 Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 Javascript
详解基于Bootstrap扁平化的后台框架Ace
Nov 27 Javascript
JS实现输入框提示文字点击时消失效果
Jul 19 Javascript
Angular2使用jQuery的方法教程
May 28 jQuery
jQuery实现checkbox全选、反选及删除等操作的方法详解
Aug 02 jQuery
微信小程序引入模块中wxml、wxss、js的方法示例
Aug 09 Javascript
Vue 3.0 全家桶抢先体验
Apr 28 Javascript
js实现表格数据搜索
Aug 09 Javascript
在项目vue中使用echarts的操作步骤
Sep 07 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
mysql 搜索之简单应用
2007/04/27 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
Python数据可视化之画图
2019/01/15 Python
python 格式化输出百分号的方法
2019/01/20 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
python中sys模块是做什么用的
2020/08/16 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
python实现自动打卡的示例代码
2020/10/10 Python
Python numpy大矩阵运算内存不足如何解决
2020/11/19 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
网络安全方面的面试题
2015/11/04 面试题
会计电算化个人自我评价
2013/11/17 职场文书
学生打架检讨书
2014/02/14 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
班主任个人工作反思
2014/04/28 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
中标通知书
2015/04/17 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL