引用
邵波的空间 的 JavaScript密码强度检测源代码
1.Body代码部分
- <body>
- <h4>密码强度检测</h4>
- <table width="100%" border="0" cellspacing="1" cellpadding="0">
- <tr>
- <td width="100" align="right">强度显示:</td>
- <td>
- <script language="javascript">
- var ps = new PasswordStrength();
- ps.setSize("200","20");
- ps.setMinLength(5);
- </script>
- </td>
- </tr>
- <tr>
- <td align="right">密码检测:</td>
- <td><input name="pwd" type="password" id="pwd" style="width:200px" onKeyUp="ps.update(this.value);"></td>
- </tr>
- </table>
- </body>
2.JS代码部分
- //密码强度;
- function PasswordStrength(showed){
- this.showed = (typeof(showed) == "boolean")?showed:true;
- this.styles = new Array();
- this.styles[0] = {backgroundColor:"#EBEBEB",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #BEBEBE",borderBottom:"solid 1px #BEBEBE"};
- this.styles[1] = {backgroundColor:"#FF4545",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #BB2B2B",borderBottom:"solid 1px #BB2B2B"};
- this.styles[2] = {backgroundColor:"#FFD35E",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #E9AE10",borderBottom:"solid 1px #E9AE10"};
- this.styles[3] = {backgroundColor:"#95EB81",borderLeft:"solid 1px #FFFFFF",borderRight:"solid 1px #3BBC1B",borderBottom:"solid 1px #3BBC1B"};
-
- this.labels= ["弱","中","强"];
-
- this.divName = "pwd_div_"+Math.ceil(Math.random()*100000);
- this.minLen = 5;
-
- this.width = "150px";
- this.height = "16px";
-
- this.content = "";
-
- this.selectedIndex = 0;
-
- this.init();
- }
- PasswordStrength.prototype.init = function(){
- var s = '<table cellpadding="0" id="'+this.divName+'_table" cellspacing="0" style="width:'+this.width+';height:'+this.height+';">';
- s += '<tr>';
- for(var i=0;i<3;i++){
- s += '<td id="'+this.divName+'_td_'+i+'" width="33%" align="center"><span style="font-size:1px"> </span><span id="'+this.divName+'_label_'+i+'" style="display:none;font-family: Courier New, Courier, mono;font-size: 12px;color: #000000;">'+this.labels[i]+'</span></td>';
- }
- s += '</tr>';
- s += '</table>';
- this.content = s;
- if(this.showed){
- document.write(s);
- this.copyToStyle(this.selectedIndex);
- }
- }
- PasswordStrength.prototype.copyToObject = function(o1,o2){
- for(var i in o1){
- o2[i] = o1[i];
- }
- }
- PasswordStrength.prototype.copyToStyle = function(id){
- this.selectedIndex = id;
- for(var i=0;i<3;i++){
- if(i == id-1){
- this.$(this.divName+"_label_"+i).style.display = "inline";
- }else{
- this.$(this.divName+"_label_"+i).style.display = "none";
- }
- }
- for(var i=0;i<id;i++){
- this.copyToObject(this.styles[id],this.$(this.divName+"_td_"+i).style);
- }
- for(;i<3;i++){
- this.copyToObject(this.styles[0],this.$(this.divName+"_td_"+i).style);
- }
- }
- PasswordStrength.prototype.$ = function(s){
- return document.getElementById(s);
- }
- PasswordStrength.prototype.setSize = function(w,h){
- this.width = w;
- this.height = h;
- }
- PasswordStrength.prototype.setMinLength = function(n){
- if(isNaN(n)){
- return ;
- }
- n = Number(n);
- if(n>1){
- this.minLength = n;
- }
- }
- PasswordStrength.prototype.setStyles = function(){
- if(arguments.length == 0){
- return ;
- }
- for(var i=0;i<arguments.length && i < 4;i++){
- this.styles[i] = arguments[i];
- }
- this.copyToStyle(this.selectedIndex);
- }
- PasswordStrength.prototype.write = function(s){
- if(this.showed){
- return ;
- }
- var n = (s == 'string') ? this.$(s) : s;
- if(typeof(n) != "object"){
- return ;
- }
- n.innerHTML = this.content;
- this.copyToStyle(this.selectedIndex);
- }
- PasswordStrength.prototype.update = function(s){
- if(s.length < this.minLen){
- this.copyToStyle(0);
- return;
- }
- var ls = -1;
- if (s.match(/[a-z]/ig)){
- ls++;
- }
- if (s.match(/[0-9]/ig)){
- ls++;
- }
- if (s.match(/(.[^a-z0-9])/ig)){
- ls++;
- }
- if (s.length < 6 && ls > 0){
- ls--;
- }
- switch(ls) {
- case 0:
- this.copyToStyle(1);
- break;
- case 1:
- this.copyToStyle(2);
- break;
- case 2:
- this.copyToStyle(3);
- break;
- default:
- this.copyToStyle(0);
- }
- }
文章来源:
http://wxq594808632.blog.163.com/blog/static/10907975520092191710543
posted on 2009-03-19 13:07
武志强 阅读(93)
评论(0) 编辑 收藏