﻿
(function(A) { A.extend(A.fn, { pstrength: function(B) { var B = A.extend({ verdects: ["弱", "弱", "中等", "强", "强"], colors: ["#ccc", "#ccc", "#f60", "#3c0", "#3c0"], scores: [10, 15, 30, 40], common: ["password", "sex", "god", "123456", "123", "liverpool", "letmein", "qwerty", "monkey"], minchar: 6 }, B); return this.each(function() { var C = A(this).attr("id"); A(this).parent().after("<div class='pswrap'></div>"); $(".pswrap").append("<label class=\"fl pstxt\" id=\"" + C + "_lab'></lable>"); $(".pswrap").append("<div class=\"pstrength-bar\" id=\"" + C + "_bar\" style=\"border: 1px solid white; font-size: 1px; height: 5px; width: 0px;\"></div>"); $(".pswrap").append("<span class=\"pstrength-info\" id=\"" + C + "_text\"></span>"); A(this).keyup(function() { A.fn.runPassword(A(this).val(), C, B); $('.pswrap').css("display", "block"); }); A(this).blur(function() { $('.pswrap').css("display", "none"); }); }) }, runPassword: function(D, F, C) { nPerc = A.fn.checkPassword(D, C); var L = "#" + F + "_lab"; var B = "#" + F + "_bar"; var E = "#" + F + "_text"; $(".pstxt").html("强度："); if (nPerc == -200) { strColor = "#ccc"; strText = "弱"; A(B).css({ width: "5%" }) } else { if (nPerc < 0 && nPerc > -199) { strColor = "#ccc"; strText = "弱"; A(B).css({ width: "5%" }) } else { if (nPerc <= C.scores[0]) { strColor = C.colors[0]; strText = C.verdects[0]; A(B).css({ width: "10%" }) } else { if (nPerc > C.scores[0] && nPerc <= C.scores[1]) { strColor = C.colors[1]; strText = C.verdects[1]; A(B).css({ width: "15%" }) } else { if (nPerc > C.scores[1] && nPerc <= C.scores[2]) { strColor = C.colors[2]; strText = C.verdects[2]; A(B).css({ width: "25%" }) } else { if (nPerc > C.scores[2] && nPerc <= C.scores[3]) { strColor = C.colors[3]; strText = C.verdects[3]; A(B).css({ width: "35%" }) } else { strColor = C.colors[4]; strText = C.verdects[4]; A(B).css({ width: "43%" }) } } } } } } A(B).css({ backgroundColor: strColor }); A(E).html("<span style='color: " + strColor + ";'>" + strText + "</span>") }, checkPassword: function(C, B) { var F = 0; var E = B.verdects[0]; if (C.length < B.minchar) { F = (F - 100) } else { if (C.length >= B.minchar && C.length <= (B.minchar + 2)) { F = (F + 6) } else { if (C.length >= (B.minchar + 3) && C.length <= (B.minchar + 4)) { F = (F + 12) } else { if (C.length >= (B.minchar + 5)) { F = (F + 18) } } } } if (C.match(/[a-z]/)) { F = (F + 1) } if (C.match(/[A-Z]/)) { F = (F + 5) } if (C.match(/\d+/)) { F = (F + 5) } if (C.match(/(.*[0-9].*[0-9].*[0-9])/)) { F = (F + 7) } if (C.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { F = (F + 5) } if (C.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) { F = (F + 7) } if (C.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) { F = (F + 2) } if (C.match(/([a-zA-Z])/) && C.match(/([0-9])/)) { F = (F + 3) } if (C.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/)) { F = (F + 3) } for (var D = 0; D < B.common.length; D++) { if (C.toLowerCase() == B.common[D]) { F = -200 } } return F } }) })(jQuery)