posts - 167,  comments - 30,  trackbacks - 0
          TitleType text here...
          /* @projectDescription jQuery Password Strength Plugin - A jQuery plugin to provide accessibility functions
           * @author Tane Piper (digitalspaghetti@gmail.com)
           * @version 2.0
           * @website: http://digitalspaghetti.me.uk/digitalspaghetti
           http://simplythebest.net/scripts/ajax/ajax_password_strength.html
           * @license MIT License: http://www.opensource.org/licenses/mit-license.php
           * 
           * === Changelog ===
           * Version 2.1 (18/05/2008)
           * Added a jQuery method to add a new rule: jQuery('input[@type=password]').pstrength.addRule(name, method, score, active)
           * Added a jQuery method to change a rule score: jQuery('input[@type=password]').pstrength.changeScore('one_number', 50);
           * Added a jQuery method to change a rules active state: jQuery('input[@type=password]').pstrength.ruleActive('one_number', false);
           * Hide the 'password to short' span if the password is more than the min chars
           * 
           * Version 2.0 (17/05/2008)
           * Completly re-wrote the plugin from scratch.  Plugin now features lamda functions for validation and
           * custom validation rules 
           * Plugin now exists in new digitalspaghetti. namespace to stop any conflits with other plugins.
           * Updated documentation
           * 
           * Version 1.4 (12/02/2008)
           * Added some improvments to i18n stuff from Raffael Luthiger.
           * Version 1.3 (02/01/2008)
           * Changing coding style to more OO
           * Added default messages object for i18n
           * Changed password length score to Math.pow (thanks to Keith Mashinter for this suggestion)
           * Version 1.2 (03/09/2007)
           * Added more options for colors and common words
           * Added common words checked to see if words like 'password' or 'qwerty' are being entered
           * Added minimum characters required for password
           * Re-worked scoring system to give better results
           * Version 1.1 (20/08/2007)
           * Changed code to be more jQuery-like
           * Version 1.0 (20/07/2007)
           * Initial version.
           
          */


          // Create our namespaced object
          /*global window */
          /*global jQuery */
          /*global digitalspaghetti*/
          window.digitalspaghetti 
          = window.digitalspaghetti || {};
          digitalspaghetti.password 
          = {    
              'defaults' : 
          {
                  'displayMinChar': 
          true,
                  'minChar': 
          6,
                  'minCharText': '',
                  'colors': [
          "#f00""#c06""#f60""#3c0""#3f0"],
                  'scores': [
          20304350],
                  'verdicts':    ['弱', '一般', '較好', '很好', '極佳'],
                  'raisePower': 
          1.4,
                  'debug': 
          false
              }
          ,
              'ruleScores' : 
          {
                  'length': 
          0,
                  'lowercase': 
          1,
                  'uppercase': 
          3,
                  'one_number': 
          3,
                  'three_numbers': 
          5,
                  'one_special_char': 
          3,
                  'two_special_char': 
          5,
                  'upper_lower_combo': 
          2,
                  'letter_number_combo': 
          2,
                  'letter_number_char_combo': 
          2
              }
          ,
              'rules' : 
          {
                  'length': 
          true,
                  'lowercase': 
          true,
                  'uppercase': 
          true,
                  'one_number': 
          true,
                  'three_numbers': 
          true,
                  'one_special_char': 
          true,
                  'two_special_char': 
          true,
                  'upper_lower_combo': 
          true,
                  'letter_number_combo': 
          true,
                  'letter_number_char_combo': 
          true
              }
          ,
              'validationRules': 
          {
                  'length': 
          function (word, score) {
                      digitalspaghetti.password.tooShort 
          = false;
                      
          var wordlen = word.length;
                      
          var lenScore = Math.pow(wordlen, digitalspaghetti.password.options.raisePower);
                      
          if (wordlen < digitalspaghetti.password.options.minChar) {
                          lenScore 
          = (lenScore - 100);
                          digitalspaghetti.password.tooShort 
          = true;
                      }

                      
          return lenScore;
                  }
          ,
                  'lowercase': 
          function (word, score) {
                      
          return word.match(/[a-z]/&& score;
                  }
          ,
                  'uppercase': 
          function (word, score) {
                      
          return word.match(/[A-Z]/&& score;
                  }
          ,
                  'one_number': 
          function (word, score) {
                      
          return word.match(/\d+/&& score;
                  }
          ,
                  'three_numbers': 
          function (word, score) {
                      
          return word.match(/(.*[0-9].*[0-9].*[0-9])/&& score;
                  }
          ,
                  'one_special_char': 
          function (word, score) {
                      
          return word.match(/.[!,@,#,$,%,\^,&,*,?,_,~]/&& score;
                  }
          ,
                  'two_special_char': 
          function (word, score) {
                      
          return word.match(/(.*[!,@,#,$,%,\^,&,*,?,_,~].*[!,@,#,$,%,\^,&,*,?,_,~])/&& score;
                  }
          ,
                  'upper_lower_combo': 
          function (word, score) {
                      
          return word.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/&& score;
                  }
          ,
                  'letter_number_combo': 
          function (word, score) {
                      
          return word.match(/([a-zA-Z])/&& word.match(/([0-9])/&& score;
                  }
          ,
                  'letter_number_char_combo' : 
          function (word, score) {
                      
          return word.match(/([a-zA-Z0-9].*[!,@,#,$,%,\^,&,*,?,_,~])|([!,@,#,$,%,\^,&,*,?,_,~].*[a-zA-Z0-9])/&& score;
                  }

              }
          ,
              'attachWidget': 
          function (element) {
                  
          var output = ['<div id="password-strength">'];
                  
          if (digitalspaghetti.password.options.displayMinChar && !digitalspaghetti.password.tooShort) {
                      output.push('
          <span class="password-min-char">+ digitalspaghetti.password.options.minCharText.replace('%d', digitalspaghetti.password.options.minChar) + '</span>');
                  }

                  output.push('
          <span class="password-strength-bar"></span>');
                  output.push('
          </div>');
                  output 
          = output.join('');
                  jQuery(element).after(output);
              }
          ,
              'debugOutput': 
          function (element) {
                  
          if (typeof console.log === 'function') {
                      console.log(digitalspaghetti.password);    
                  }
           else {
                      alert(digitalspaghetti.password);
                  }

              }
          ,
              'addRule': 
          function (name, method, score, active) {
                  digitalspaghetti.password.rules[name] 
          = active;
                  digitalspaghetti.password.ruleScores[name] 
          = score;
                  digitalspaghetti.password.validationRules[name] 
          = method;
                  
          return true;
              }
          ,
              'init': 
          function (element, options) {
                  digitalspaghetti.password.options 
          = jQuery.extend({}, digitalspaghetti.password.defaults, options);
                  digitalspaghetti.password.attachWidget(element);
                  jQuery(element).keyup(
          function () {
                      digitalspaghetti.password.calculateScore(jQuery(
          this).val());
                  }
          );
                  
          if (digitalspaghetti.password.options.debug) {
                      digitalspaghetti.password.debugOutput();
                  }

              }
          ,
              'calculateScore': 
          function (word) {
                  digitalspaghetti.password.totalscore 
          = 0;
                  digitalspaghetti.password.width 
          = 0;
                  
          for (var key in digitalspaghetti.password.rules) if (digitalspaghetti.password.rules.hasOwnProperty(key)) {
                      
          if (digitalspaghetti.password.rules[key] === true{
                          
          var score = digitalspaghetti.password.ruleScores[key];
                          
          var result = digitalspaghetti.password.validationRules[key](word, score);
                          
          if (result) {
                              digitalspaghetti.password.totalscore 
          += result;
                          }

                      }

                      
          if (digitalspaghetti.password.totalscore <= digitalspaghetti.password.options.scores[0]) {
                          digitalspaghetti.password.strColor 
          = digitalspaghetti.password.options.colors[0];
                          digitalspaghetti.password.strText 
          = digitalspaghetti.password.options.verdicts[0];
                          digitalspaghetti.password.width 
          =  "3";
                      }
           else if (digitalspaghetti.password.totalscore > digitalspaghetti.password.options.scores[0&& digitalspaghetti.password.totalscore <= digitalspaghetti.password.options.scores[1]) {
                          digitalspaghetti.password.strColor 
          = digitalspaghetti.password.options.colors[1];
                          digitalspaghetti.password.strText 
          = digitalspaghetti.password.options.verdicts[1];
                          digitalspaghetti.password.width 
          =  "6";
                      }
           else if (digitalspaghetti.password.totalscore > digitalspaghetti.password.options.scores[1&& digitalspaghetti.password.totalscore <= digitalspaghetti.password.options.scores[2]) {
                          digitalspaghetti.password.strColor 
          = digitalspaghetti.password.options.colors[2];
                          digitalspaghetti.password.strText 
          = digitalspaghetti.password.options.verdicts[2];
                          digitalspaghetti.password.width 
          =  "9";
                      }
           else if (digitalspaghetti.password.totalscore > digitalspaghetti.password.options.scores[2&& digitalspaghetti.password.totalscore <= digitalspaghetti.password.options.scores[3]) {
                          digitalspaghetti.password.strColor 
          = digitalspaghetti.password.options.colors[3];
                          digitalspaghetti.password.strText 
          = digitalspaghetti.password.options.verdicts[3];
                          digitalspaghetti.password.width 
          =  "12";
                      }
           else {
                          digitalspaghetti.password.strColor 
          = digitalspaghetti.password.options.colors[4];
                          digitalspaghetti.password.strText 
          = digitalspaghetti.password.options.verdicts[4];
                          digitalspaghetti.password.width 
          =  "15";
                      }

                      jQuery('.password
          -strength-bar').stop();
                      
                      
          if (digitalspaghetti.password.options.displayMinChar && !digitalspaghetti.password.tooShort) {
                          jQuery('.password
          -min-char').hide();
                      }
           else {
                          jQuery('.password
          -min-char').show();
                      }

                      
                      jQuery('.password
          -strength-bar').animate({opacity: 0.5}, 'fast', 'linear', function () {
                          jQuery(
          this).css({'display': 'block', 'background-color': digitalspaghetti.password.strColor, 'width': digitalspaghetti.password.width + "%"}).text(digitalspaghetti.password.strText);
                          jQuery(
          this).animate({opacity: 1}, 'fast', 'linear');
                      }
          );
                  }

              }

          }
          ;

          jQuery.extend(jQuery.fn, 
          {
              'pstrength': 
          function (options) {
                  
          return this.each(function () {
                      digitalspaghetti.password.init(
          this, options);
                  }
          );
              }

          }
          );
          jQuery.extend(jQuery.fn.pstrength, 
          {
              'addRule': 
          function (name, method, score, active) {
                  digitalspaghetti.password.addRule(name, method, score, active);
                  
          return true;
              }
          ,
              'changeScore': 
          function (rule, score) {
                  digitalspaghetti.password.ruleScores[rule] 
          = score;
                  
          return true;
              }
          ,
              'ruleActive': 
          function (rule, active) {
                  digitalspaghetti.password.rules[rule] 
          = active;
                  
          return true;
              }

          }
          );
          上述為jquery_passstrength.js
          下面為測試代碼:
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>jquert-password-strength</title>
          <script type="text/javascript" src="js/jquery-1.2.6.min.js"></script>  
          <script type="text/javascript" src="js/digitalspaghetti.password.js"></script>
          <script type="text/javascript">
          $(
          function() {
              $('#user_password').pstrength();
          }
          );
          </script>
          <style>
          .pstrength-minchar 
          {
          font-size 
          : 10px;
          }

          input 
          {
              width
          :180px;
              height
          :12px;
              line-height
          :12px;
              padding
          :4px 0px;
              border
          : #cfcfcf 1px solid;
              color
          : #585858;
          }

          password-strength,.password-strength-bar 
          {
              width
          :300px;
          }

          </style>
          </head>

          <body>
          密碼:
          <input type="password" id="user_password" name="user_password" />
          </body>
          </html>
          ============================================================
          實現2:
          =============================================================

          <html>
          <head>
          <title>密碼強度檢測Demo</title>
          <script type="text/javascript">
           function passwordTest(obj){
            var t=obj.value;
            var id=getResult(t);
            //定義對應的消息提示
            var msg=new Array(4);
            msg[0]="密碼過短。";
            msg[1]="密碼強度差。";
            msg[2]="密碼強度良好。";
            msg[3]="密碼強度高。";
            var sty=new Array(4);
            sty[0]=-45;
            sty[1]=-30;
            sty[2]=-15;
            sty[3]=0;
            var col = new Array(4);
            col[0] = "gray";
            col[1] = "#50AEDD";
            col[2] = "#FF8213";
            col[3] = "green";
            //設置顯示效果
            var bImg="/img/pwdlen_dSIPeEGQWxfO.gif" //一張顯示用的圖片
            var sWidth=300;
            var sHeight=15;
            var Bobj=document.getElementById("nodetext");

            Bobj.style.fontSize="12px";
            Bobj.style.color=col[id];
            Bobj.style.width=sWidth + "px";
            Bobj.style.height=sHeight + "px";
            Bobj.style.lineHeight=sHeight + "px";
            Bobj.style.background="url(" + bImg + ") no-repeat left " + sty[id] + "px";
            Bobj.style.textIndent="20px";
            Bobj.innerHTML="檢測提示:" + msg[id];
           }
           //定義檢測函數,返回0/1/2/3分別代表無效/差/一般/強
           function getResult(s){
            if(s.length < 4){
             return 0;
            }
            var ls = 0;
            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--;
            }
            return ls
           }
          </script>
          </head>
          <body>
          <form name="form1">
           <label for="pwd">用戶密碼</label>
           <input type="password" name="pwd" onKeyUp="passwordTest(this)" />
           <div id="nodetext"></div>
          </form>
          </body>
          </html>

          posted on 2010-12-30 14:47 David1228 閱讀(2499) 評論(0)  編輯  收藏 所屬分類: JQuery

          <2010年12月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章檔案

          新聞分類

          新聞檔案

          相冊

          收藏夾

          Java

          Linux知識相關

          Spring相關

          云計算/Linux/虛擬化技術/

          友情博客

          多線程并發編程

          開源技術

          持久層技術相關

          搜索

          •  

          積分與排名

          • 積分 - 359318
          • 排名 - 154

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 镇康县| 万全县| 咸宁市| 阿拉善左旗| 得荣县| 突泉县| 西畴县| 紫云| 松潘县| 黄梅县| 会东县| 邛崃市| 温宿县| 合水县| 怀来县| 景宁| 三都| 永泰县| 土默特右旗| 舒兰市| 三河市| 灵寿县| 柯坪县| 武陟县| 灵石县| 平南县| 登封市| 望都县| 平潭县| 渭南市| 肥城市| 平塘县| 明水县| 亚东县| 玉田县| 肇源县| 宁波市| 广昌县| 扶沟县| 宜州市| 衡山县|