基于JQuery的密码强度验证代码


Posted in Javascript onMarch 01, 2010

基于JQuery的密码强度验证代码  基于JQuery的密码强度验证代码 

基于JQuery的密码强度验证代码基于JQuery的密码强度验证代码
因为是基于JQuery的控件,当然需要JQuery库,还要一个本控件的JS。JQuery的JS大家可以到官网下载:http://code.jquery.com/jquery-1.4.2.min.js
这个控件的JS文件:password_strength_plugin.js
password_strength_plugin.js

(function($){ 
$.fn.shortPass = 'Too short'; 
$.fn.badPass = 'Weak'; 
$.fn.goodPass = 'Good'; 
$.fn.strongPass = 'Strong'; 
$.fn.samePassword = 'Username and Password identical.'; 
$.fn.resultStyle = ""; 
$.fn.passStrength = function(options) { 
var defaults = { 
shortPass: "shortPass", //optional 
badPass: "badPass", //optional 
goodPass: "goodPass", //optional 
strongPass: "strongPass", //optional 
baseStyle: "testresult", //optional 
userid: "", //required override 
messageloc: 1 //before == 0 or after == 1 
}; 
var opts = $.extend(defaults, options); 
return this.each(function() { 
var obj = $(this); 
$(obj).unbind().keyup(function() 
{ 
var results = $.fn.teststrength($(this).val(),$(opts.userid).val(),opts); 
if(opts.messageloc === 1) 
{ 
$(this).next("." + opts.baseStyle).remove(); 
$(this).after("<span class=\""+opts.baseStyle+"\"><span></span></span>"); 
$(this).next("." + opts.baseStyle).addClass($(this).resultStyle).find("span").text(results); 
} 
else 
{ 
$(this).prev("." + opts.baseStyle).remove(); 
$(this).before("<span class=\""+opts.baseStyle+"\"><span></span></span>"); 
$(this).prev("." + opts.baseStyle).addClass($(this).resultStyle).find("span").text(results); 
} 
}); 
//FUNCTIONS 
$.fn.teststrength = function(password,username,option){ 
var score = 0; 
//password < 4 
if (password.length < 4 ) { this.resultStyle = option.shortPass;return $(this).shortPass; } 
//password == user name 
if (password.toLowerCase()==username.toLowerCase()){this.resultStyle = option.badPass;return $(this).samePassword;} 
//password length 
score += password.length * 4; 
score += ( $.fn.checkRepetition(1,password).length - password.length ) * 1; 
score += ( $.fn.checkRepetition(2,password).length - password.length ) * 1; 
score += ( $.fn.checkRepetition(3,password).length - password.length ) * 1; 
score += ( $.fn.checkRepetition(4,password).length - password.length ) * 1; 
//password has 3 numbers 
if (password.match(/(.*[0-9].*[0-9].*[0-9])/)){ score += 5;} 
//password has 2 symbols 
if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)){ score += 5 ;} 
//password has Upper and Lower chars 
if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)){ score += 10;} 
//password has number and chars 
if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)){ score += 15;} 
// 
//password has number and symbol 
if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)){ score += 15;} 
//password has char and symbol 
if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)){score += 15;} 
//password is just a numbers or chars 
if (password.match(/^\w+$/) || password.match(/^\d+$/) ){ score -= 10;} 
//verifying 0 < score < 100 
if ( score < 0 ){score = 0;} 
if ( score > 100 ){ score = 100;} 
if (score < 34 ){ this.resultStyle = option.badPass; return $(this).badPass;} 
if (score < 68 ){ this.resultStyle = option.goodPass;return $(this).goodPass;} 
this.resultStyle= option.strongPass; 
return $(this).strongPass; 
}; 
}); 
}; 
})(jQuery); 
$.fn.checkRepetition = function(pLen,str) { 
var res = ""; 
for (var i=0; i<str.length ; i++ ) 
{ 
var repeated=true; 
for (var j=0;j < pLen && (j+i+pLen) < str.length;j++){ 
repeated=repeated && (str.charAt(j+i)==str.charAt(j+i+pLen)); 
} 
if (j<pLen){repeated=false;} 
if (repeated) { 
i+=pLen-1; 
repeated=false; 
} 
else { 
res+=str.charAt(i); 
} 
} 
return res; 
};

这个控件的css文件:
style.css
td label{ 
font-size:14px; 
font-weight:bold; 
color:#666; 
font-family: arail,helvetica,san-serif; 
} 
input{ 
height:28px; 
width:200px; 
border:1px solid #ccc; 
font-size:16px; 
font-weight: bold; 
color:#666; 
padding:7px 0 0 4px; 
} 
/* ADVANCED STYLES */ 
.top_testresult{ 
font-weight: bold; 
font-size:13px; 
font-family: arail,helvetica,san-serif; 
color:#666; 
padding:0; 
margin:0 0 2px 0; 
} 
.top_testresult span{ 
padding:6px ; 
margin:0; 
} 
.top_shortPass{ 
background:#edabab; 
border:1px solid #bc0000; 
display:block; 
} 
.top_shortPass span{ 
} 
.top_badPass{ 
background:#edabab; 
border:1px solid #bc0000; 
display:block; 
} 
.top_badPass span{ 
} 
.top_goodPass{ 
background:#ede3ab; 
border:1px solid #bc9f00; 
display:block; 
} 
.top_goodPass span{ 
} 
.top_strongPass{ 
background:#d3edab; 
border:1px solid #73bc00; 
display:block; 
} 
.top_strongPass span{ 
} 
/* RESULT STYLE */ 
.testresult{ 
font-weight: bold; 
font-size:13px; 
font-family: arial,helvetica,san-serif; 
color:#666; 
padding:0px 0px 12px 10px; 
margin-left:10px; 
display: block; 
height:28px; 
float:left; 
} 
.testresult span{ 
padding:10px 20px 12px 10px; 
margin: 0px 0px 0px 20px; 
display:block; 
float:right; 
white-space: nowrap; 
} 
.shortPass{ 
background:url(../images/red.png) no-repeat 0 0; 
} 
.shortPass span{ 
background:url(../images/red.png) no-repeat top right; 
} 
.badPass{ 
background:url(../images/red.png) no-repeat 0 0; 
} 
.badPass span{ 
background:url(../images/red.png) no-repeat top right; 
} 
.goodPass{ 
background:url(../images/yellow.png) no-repeat 0 0; 
} 
.goodPass span{ 
background:url(../images/yellow.png) no-repeat top right; 
} 
.strongPass{ 
background:url(../images/green.png) no-repeat 0 0; 
} 
.strongPass span{ 
background:url(../images/green.png) no-repeat top right; 
}

head部分代码
head
<title>无标题页</title> 
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> 
<!-- custom select plugin js --> 
<script type="text/javascript" src="js/password_strength_plugin.js"></script> 
<link rel="stylesheet" type="text/css" href="css/style.css"> 
<script> 
$(document).ready( function() { 
//BASIC 
$(".password_test").passStrength({ 
userid: "#user_id" 
}); 
//ADVANCED 
$(".password_adv").passStrength({ 
shortPass: "top_shortPass", 
badPass: "top_badPass", 
goodPass: "top_goodPass", 
strongPass: "top_strongPass", 
baseStyle: "top_testresult", 
userid: "#user_id_adv", 
messageloc: 0 
}); 
}); 
</script>

body部分代码
body
<body> 
<table cellpadding="2" cellspacing="0" border="0"> 
<tr> 
<td align="right"><label>User Name:</label></td> 
<td><input type="text" name="user_name" id="user_id_adv"/></td> 
</tr> 
<tr> 
<td align="right"><label>Password:</label></td> 
<td><input type="password" name="pass_word" class="password_adv"/></td> 
</tr> 
</table> 
</body>
Javascript 相关文章推荐
js验证是否为数字的总结
Apr 14 Javascript
Js点击弹出下拉菜单效果实例
Aug 12 Javascript
jQuery中nextUntil()方法用法实例
Jan 07 Javascript
再谈JavaScript线程
Jul 10 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
Nov 24 Javascript
js实现显示手机号码效果
Mar 09 Javascript
图片加载完成再执行事件的实例
Nov 16 Javascript
Angularjs中的$apply及优化使用详解
Jul 02 Javascript
基于vue cli 通过命令行传参实现多环境配置
Jul 12 Javascript
使用webpack4编译并压缩ES6代码的方法示例
Apr 24 Javascript
小程序接入腾讯位置服务的详细流程
Mar 03 Javascript
浅谈vue的第一个commit分析
Jun 08 Javascript
Jquery下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
Mar 01 #Javascript
基于jquery.Jcrop的头像编辑器
Mar 01 #Javascript
IE event.srcElement和FF event.target 功能比较
Mar 01 #Javascript
Javascript 判断客户端浏览器类型代码
Mar 01 #Javascript
在chrome中window.onload事件的一些问题
Mar 01 #Javascript
仅用[]()+!等符号就足以实现几乎任意Javascript代码
Mar 01 #Javascript
Javascript 网页水印(非图片水印)实现代码
Mar 01 #Javascript
You might like
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
php从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
JavaScript中this详解
2015/09/01 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
深入理解vue $refs的基本用法
2017/07/13 Javascript
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
Python程序语言快速上手教程
2012/07/18 Python
python批量制作雷达图的实现方法
2016/07/26 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
TensorFlow如何实现反向传播
2018/02/06 Python
Python读取指定日期邮件的实例
2019/02/01 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
详解python 爬取12306验证码
2019/05/10 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
Python的互斥锁与信号量详解
2019/09/12 Python
香港交友网站:be2香港
2018/07/22 全球购物
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
数学检讨书1000字
2014/02/24 职场文书
教堂婚礼主持词
2014/03/14 职场文书
校园绿化美化方案
2014/06/08 职场文书
七年级作文之英语老师
2019/10/28 职场文书
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python