初始版本
This commit is contained in:
161
statics/resources/v7/js/checkPassword.js
Executable file
161
statics/resources/v7/js/checkPassword.js
Executable file
@@ -0,0 +1,161 @@
|
||||
/**
|
||||
*密码检测
|
||||
*@param {String, Object} 密码输入框的选择符
|
||||
*@param {Object} 参数设置
|
||||
*/
|
||||
var checkPassword = function(obj,cfg){
|
||||
typeof obj == 'string' ? (this.obj = $(obj)) : (this.obj = obj);
|
||||
var def_cfg = {
|
||||
error_cls : ['tip_error'],
|
||||
correct_cls : ['tip_correct'],
|
||||
lowest_level : 5,
|
||||
tips : ['#password_tip'], //tip元素的选择符
|
||||
strength : '#pwdStrTip', //显示密码强度的元素
|
||||
if_show : false //是否显示密码强度
|
||||
};
|
||||
cfg = cfg || {};
|
||||
this.cfg = $.extend({},def_cfg,cfg);
|
||||
this.init();
|
||||
};
|
||||
|
||||
checkPassword.reg = {
|
||||
nums : /^\d+$/, //纯数字
|
||||
letters : /^[a-zA-Z]+$/, //纯字母
|
||||
space : /[\u0020\uA1A1\u3000]/, //存在空格符
|
||||
chinese : /[\u4E00-\u9FA5]/, //存在中文
|
||||
num : /\d/, //存在数字
|
||||
letter : /[a-zA-Z]/, //存在字母
|
||||
special : /[^a-zA-Z0-9]/ //存在特殊符
|
||||
};
|
||||
|
||||
checkPassword.txt = ['请输入密码',
|
||||
'长度8~20位,同时包含数字、字母(区分大小写),可使用特殊符号',
|
||||
'长度8~20位,同时包含数字、字母(区分大小写),可使用特殊符号',
|
||||
'密码不能包含中文',
|
||||
'密码必须同时包含数字、字母(区分大小写),可使用特殊符号',
|
||||
'',
|
||||
''] ;//每个密码级别的提示语
|
||||
|
||||
/**
|
||||
*阻止空格符输入(结合keypress使用)
|
||||
*/
|
||||
checkPassword.blockSpace = function(_event){
|
||||
if(_event.keyCode){
|
||||
var char = String.fromCharCode(_event.keyCode);
|
||||
}else{
|
||||
var char = String.fromCharCode(_event.charCode);
|
||||
}
|
||||
return !checkPassword.reg.space.test(char);
|
||||
};
|
||||
|
||||
/**
|
||||
*检测密码强度
|
||||
*@param {String, Number} 密码
|
||||
*/
|
||||
checkPassword.level = function(val){
|
||||
//密码为空时返回0
|
||||
//密码小于8位或大于20位时返回1
|
||||
//密码包含空格符时返回2
|
||||
//密码包含中文时返回3
|
||||
//密码为纯数字或纯字母时为4
|
||||
//密码为数字+字母时为5
|
||||
//密码为数字、字母、特殊符号组合时为6
|
||||
if(val.length == 0) return 0;
|
||||
if(val.length < 8 || val.length > 20) return 1;
|
||||
if(checkPassword.reg.space.test(val)) return 2;
|
||||
if(checkPassword.reg.chinese.test(val)) return 3;
|
||||
if(checkPassword.reg.nums.test(val) || checkPassword.reg.letters.test(val)) return 4;
|
||||
if(checkPassword.reg.num.test(val) && checkPassword.reg.letter.test(val) && !checkPassword.reg.special.test(val)) return 5;
|
||||
if(checkPassword.reg.special.test(val)) return 6;
|
||||
};
|
||||
|
||||
|
||||
checkPassword.prototype = {
|
||||
init : function(){
|
||||
var level = checkPassword.level(this.obj.val());
|
||||
this.showTip(level);
|
||||
this.cfg.if_show && this.setState(level);
|
||||
this.isCorrect = level >= this.cfg.lowest_level; //密码输入正确与否
|
||||
},
|
||||
|
||||
/**
|
||||
*检测结果显示
|
||||
*@param {String, Number} 密码强度
|
||||
*/
|
||||
showTip : function(level){
|
||||
if(this.cfg.tips.length == 1){
|
||||
var error = this.cfg.error_cls[0], correct = this.cfg.correct_cls[0], tip = $(this.cfg.tips[0]);
|
||||
|
||||
if(level >= this.cfg.lowest_level){
|
||||
tip.removeClass(error).addClass(correct);
|
||||
tip.html(checkPassword.txt[level]);
|
||||
}else{
|
||||
tip.removeClass(correct).addClass(error);
|
||||
tip.html(checkPassword.txt[level]);
|
||||
}
|
||||
}else if(this.cfg.tips.length == 2){
|
||||
var error1 = this.cfg.error_cls[0], correct1 = this.cfg.correct_cls[0], tip1 = $(this.cfg.tips[0]), //tip1显示提示用语
|
||||
error2 = error1, correct2 = correct1, tip2 = $(this.cfg.tips[1]); //tip2显示图标
|
||||
|
||||
this.cfg.error_cls.length == 2 && (error2 = this.cfg.error_cls[1]);
|
||||
this.cfg.correct_cls.length == 2 && (correct2 = this.cfg.correct_cls[1]);
|
||||
|
||||
if(level >= this.cfg.lowest_level){
|
||||
tip1.removeClass(error1).addClass(correct1);
|
||||
tip1.html(checkPassword.txt[level]);
|
||||
tip2.removeClass(error2).addClass(correct2);
|
||||
}else{
|
||||
tip1.removeClass(correct1).addClass(error1);
|
||||
tip1.html(checkPassword.txt[level]);
|
||||
tip2.removeClass(correct2).addClass(error2);
|
||||
}
|
||||
}
|
||||
},//end of showTip
|
||||
|
||||
/**
|
||||
*显示密码强度
|
||||
*@param {String, Number} 密码强度
|
||||
*/
|
||||
setState : function(level){
|
||||
var pwdStrTip = $(this.cfg.strength), pwdInfo = pwdStrTip.find('.pwdInfo');
|
||||
if(level >= this.cfg.lowest_level){
|
||||
pwdStrTip.show();
|
||||
switch(level){
|
||||
case 4:
|
||||
this.setStyle("#FF0000","#FFFFFF","#FFFFFF");
|
||||
pwdInfo.text(":弱");
|
||||
break;
|
||||
case 5:
|
||||
this.setStyle("#FFD35E","#FFD35E","#FFFFFF");
|
||||
pwdInfo.text(":一般");
|
||||
break;
|
||||
case 6:
|
||||
this.setStyle("#95EB81","#95EB81","#95EB81");
|
||||
pwdInfo.text(":强");
|
||||
break;
|
||||
default:
|
||||
this.setStyle("#FFFFFF","#FFFFFF","#FFFFFF");
|
||||
pwdInfo.text("");
|
||||
}
|
||||
}else{
|
||||
pwdStrTip.hide();
|
||||
this.setStyle("#FFFFFF","#FFFFFF","#FFFFFF");
|
||||
pwdInfo.text("");
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
*设置密码强度条的颜色
|
||||
*@param {RGB}
|
||||
*@param {RGB}
|
||||
*@param {RGB}
|
||||
*/
|
||||
setStyle : function(st1,st2,st3){
|
||||
var s1 = $(this.cfg.strength).find('.s1'),
|
||||
s2 = $(this.cfg.strength).find('.s2'),
|
||||
s3 = $(this.cfg.strength).find('.s3');
|
||||
s1.css('background-color',st1);
|
||||
s2.css('background-color',st2);
|
||||
s3.css('background-color',st3);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user