基于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 相关文章推荐
通过隐藏iframe实现文件下载的js方法介绍
Feb 26 Javascript
Document.location.href和.replace的区别示例介绍
Mar 04 Javascript
基于javascript实现随机颜色变化效果
Jan 14 Javascript
基于jQuery日历插件制作日历
Mar 11 Javascript
JS中改变this指向的方法(call和apply、bind)
Mar 26 Javascript
Node.js Streams文件读写操作详解
Jul 04 Javascript
JavaScript中transform实现数字翻页效果
Mar 08 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
Aug 29 Javascript
JavaScript实现微信红包算法及问题解决方法
Apr 26 Javascript
浅析vue.js数组的变异方法
Jun 30 Javascript
微信小程序页面上下滚动效果
Nov 18 Javascript
Vue封装的组件全局注册并引用
Jul 24 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
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
php获得当前的脚本网址
2007/12/10 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
php递归创建和删除文件夹的代码小结
2012/04/13 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
非常好的js代码
2006/06/27 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
Python之父谈Python的未来形式
2016/07/01 Python
python可视化实现代码
2019/01/15 Python
使用python模拟高斯分布例子
2019/12/09 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
机电一体化专业应届生求职信
2013/11/27 职场文书
优秀实习自我鉴定
2013/12/04 职场文书
工程技术员岗位职责
2014/03/02 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
取保候审保证书
2014/04/30 职场文书
零基础学java之循环语句的使用
2022/04/10 Java/Android