来自Google的密码强度Javascript验证代码

先看看效果吧:
 
  1 <script type="text/javascript">
  2 var agt = navigator.userAgent.toLowerCase();
  3 var is_op = (agt.indexOf("opera"!= -1);
  4 var is_ie = (agt.indexOf("msie"!= -1&& document.all && !is_op;
  5 var is_ie5 = (agt.indexOf("msie 5"!= -1&& document.all && !is_op;
  6 
  7 function CreateXmlHttpReq(handler) {
  8   var xmlhttp = null;
  9   if (is_ie) {
 10     var control = (is_ie5) ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP";
 11     try {
 12       xmlhttp = new ActiveXObject(control);
 13       xmlhttp.onreadystatechange = handler;
 14     } catch (ex) {
 15       alert("You need to enable active scripting and activeX controls");  
 16     }
 17 
 18   } else {
 19     xmlhttp = new XMLHttpRequest();
 20     xmlhttp.onload = handler;
 21     xmlhttp.onerror = handler;
 22   }
 23   return xmlhttp;
 24 }
 25 
 26 
 27 function XmlHttpPOST(xmlhttp, url, data) {
 28   try {
 29     xmlhttp.open("POST", url, true);
 30     xmlhttp.setRequestHeader("Content-Type""application/x-www-form-urlencoded; charset=UTF-8");
 31     xmlhttp.send(data);
 32 
 33   } catch (ex) {
 34     // do nothing
 35   }
 36 }
 37 
 38 
 39 var myxmlhttp;
 40 ratingMsgs = new Array(6);
 41 ratingMsgColors = new Array(6);
 42 barColors = new Array(6);
 43 
 44 ratingMsgs[0= "太短";
 45 ratingMsgs[1= "";
 46 ratingMsgs[2= "一般";
 47 ratingMsgs[3= "很好";
 48 ratingMsgs[4= "极佳";
 49 ratingMsgs[5= "未评级";
 50 
 51 ratingMsgColors[0= "#676767";
 52 ratingMsgColors[1= "#aa0033";
 53 ratingMsgColors[2= "#f5ac00";
 54 ratingMsgColors[3= "#6699cc";
 55 ratingMsgColors[4= "#008000";
 56 ratingMsgColors[5= "#676767";
 57 
 58 barColors[0= "#dddddd";
 59 barColors[1= "#aa0033";
 60 barColors[2= "#ffcc33";
 61 barColors[3= "#6699cc";
 62 barColors[4= "#008000";
 63 barColors[5= "#676767";
 64 
 65 function CreateRatePasswdReq () 
 66 {
 67 var passwd = getElement('Passwd').value;
 68 var email = getElement('Email').value;
 69 var lastname = getElement('LastName').value;
 70 var firstname = getElement('FirstName').value;
 71 var min_passwd_len = 6;
 72 
 73 
 74 if (passwd.length < min_passwd_len)  
 75 {
 76   if (passwd.length > 0
 77   {
 78     DrawBar(0);
 79   } 
 80   else 
 81   {
 82     ResetBar();
 83   }
 84 }
 85 else 
 86 {
 87     passwd = escape(passwd);
 88     var params = 'Passwd='+passwd+'&Email='+email+'&FirstName='+firstname+'&LastName='+lastname;
 89     myxmlhttp = CreateXmlHttpReq(RatePasswdXmlHttpHandler);
 90     XmlHttpPOST(myxmlhttp, "https://www.google.com/accounts/RatePassword", params);
 91 }
 92 }
 93 
 94 function getElement(name) 
 95 {
 96   if (document.all) 
 97   {
 98       return document.all(name);
 99   }
100   return document.getElementById(name);
101 }
102 
103 function RatePasswdXmlHttpHandler() 
104 // Can't check status since safari doesn't support it
105   if (myxmlhttp.readyState != 4
106   {
107   return;
108   }
109   rating = parseInt(myxmlhttp.responseText);
110   DrawBar(rating);
111 }
112 
113 function DrawBar(rating) 
114 {
115 var posbar = getElement('posBar');
116 var negbar = getElement('negBar');
117 var passwdRating = getElement('passwdRating');
118 var barLength = getElement('passwdBar').width;
119 
120 if (rating >= 0 && rating <= 4
121 {       //We successfully got a rating
122     posbar.style.width = barLength / 4 * rating + "px";
123     negbar.style.width = barLength / 4 * (4 - rating) + "px";
124 }
125 else 
126 {
127     posbar.style.width = "0px";
128     negbar.style.width = barLength + "px";
129     rating = 5// Not rated Rating
130 }
131 posbar.style.background = barColors[rating]
132 passwdRating.innerHTML = "<font color='" + ratingMsgColors[rating] +"'>" + ratingMsgs[rating] + "</font>";
133 }
134 
135 
136   //Resets the password strength bar back to its initial state without any message showing.
137   function ResetBar() 
138   {
139     var posbar = getElement('posBar');
140     var negbar = getElement('negBar');
141     var passwdRating = getElement('passwdRating');
142     var barLength = getElement('passwdBar').width;
143 
144     posbar.style.width = "0px";
145     negbar.style.width = barLength + "px";
146     passwdRating.innerHTML = "";
147   }
148 
149 </script>
150 
151 <table width="60%"  border="0">
152     <tr>
153         <td width="30%">
154             <input type="hidden" value="" id="FirstName" size="30">
155             <input type="hidden" value="" id="LastName" size="30">
156             <input type="hidden" id="Email" value="" size="30">
157             <input type="password" id="Passwd" value="" onkeyup="CreateRatePasswdReq()" size="30">
158         </td>
159         <td width="70%">
160             <table cellpadding="0" cellspacing="0" border="0">
161                 <tr>
162                     <td width="200" id="passwdBar">
163                         <table cellpadding="0" cellspacing="0" border="0">
164                             <tr>
165                                 <td nowrap valign="top"  height="15px"><font color="#808080" size="-1" face="Arial, sans-serif"><div id="passwdRating"></div></font></td>
166                             </tr>
167                             <tr>
168                                 <td height="3px"></td>
169                             </tr>
170                             <tr>
171                                 <td colspan="2">
172                                     <table cellpadding="0" bgcolor="#ffffff" cellspacing="0" border="0" width="200">
173                                         <tr>
174                                             <td width="0%" id="posBar" bgcolor="#e0e0e0" height="4px"></td>
175                                             <td width="100%" id="negBar" bgcolor="#e0e0e0" height="4px"></td>
176                                         </tr>
177                                     </table>
178                                 </td>
179                             </tr>
180                         </table>
181                     </td>
182                 </tr>
183             </table>
184         </td>
185     </tr>
186 </table>
187 
本文地址:http://www.cnblogs.com/anjou/archive/2006/11/16/563032.html

posted on 2006-11-16 22:21  大豆男生  阅读(974)  评论(3编辑  收藏  举报

导航