當柳上原的風吹向天際的時候...

          真正的快樂來源于創造

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks

           

           

           

           

           

           

          Teambiz中前臺表單驗證組件FormChecker

           

           

           

           

           

           

           

          作者:何楊

          撰寫日期:2012年2月27日

          版本:1.00

          更新日期:  

           

           

          第一部分:功能說明

          對前臺頁面的表單組件(對于所有用.value能取到值的組件都適用)提供正則表達式驗證功能。

          第二部分:核心組件

          名稱

          路徑

          說明

          CheckItem

          teambiz\WebRoot\page\js\formchecker.js

          這個類表示一個頁面檢查項,參數有表單組件id,當不合法時提示的文字,驗證表單組件內容的正則表達式和表征組件是否必填字段。

          在頁面中增添驗證項時常會遇到這個類。

          FormChecker

          teambiz\WebRoot\page\js\formchecker.js

          這個類表示一個前臺組件正則表達式驗證器。內含一個數組,以容納多個驗證項(CheckItem)

          addCheckItem

          teambiz\WebRoot\page\js\formchecker.js

          FormChecker的數組中增添一個驗證項。

          在頁面中增添驗證項時常會遇到這個類。

          checkTextBox

          teambiz\WebRoot\page\js\formchecker.js

          對一個checkItem進行檢查,如果它是必填組件,使用正則表達式驗證它,并返回驗證的結果;如果它不是必填組件,且沒有輸入內容的話,返回真,否則依然按照正則表單時來驗證它。


           

          isValid

          teambiz\WebRoot\page\js\formchecker.js

          FormChecker的數組進行循環并逐個使用checkTextBox函數進行檢查,當所有的檢查項都符合驗證條件后返回真;如果有一個檢查項不符合條件,使用alert顯示提示文字并將焦點至于該組件上。

          用戶在提交表單前應該調用這個函數得到表單的驗證結果。

           

          第三部分:CheckItem和FormChecker兩個類的代碼

          以下代碼請參見teambiz\WebRoot\page\js\ formchecker.js中同名函數

          /*************************

          *

          *   Class:CheckItem

          *   2009.08.23

          **************************/

          //-- Contructor

          function CheckItem(textboxName,msg,validChar,isRequired){

                      this.textboxName=textboxName;

                      this.msg=msg;

                      this.validChar=validChar;

                      this.isRequired=isRequired;

          }

           

          /*************************

          *

          *   Class:FormChecker

          *   2009.08.23

          **************************/

          //-- Contructor

          function FormChecker(){

                      this.checkItemArray=new Array;

          }

          //-- Add a check Item to array

          FormChecker.prototype.addCheckItem=function(textboxName,msg,validChar,isRequired){

                      var checkItem=new CheckItem(textboxName,msg,validChar,isRequired);

                      this.checkItemArray[this.checkItemArray.length]=checkItem;

          };

          //-- Check text field in the form

          FormChecker.prototype.checkTextBox=function(checkItem){

                      var validChar=checkItem.validChar;

                      var isRequired=checkItem.isRequired;

                      var inputValue=$(checkItem.textboxName).value;

                     

                      if(isRequired!="true" && inputValue.length<1){

                                  return true;

                      }

                      else{

                                  var regexStr="^"+validChar+"$";

                                  var regex=new RegExp(regexStr);

                                  return regex.test(inputValue);

                      }

          };

          //-- judge the validation of a form

          FormChecker.prototype.isValid=function(){

                      for(var i=0;i<this.checkItemArray.length;i++){

                                  var       toBeCheckedObj=this.checkItemArray[i];

                                 

                                  var checkResult=this.checkTextBox(toBeCheckedObj);

                                 

                                  if(checkResult==true){

                                              continue;

                                  }

                                  else{               

                                              alert(toBeCheckedObj.msg);

                                              $(toBeCheckedObj.textboxName).focus();

                                             

                                              return false;

                                  }

                      }

                      return true;

          };

          第四部分:使用CheckItem和FormChecker進行驗證的代碼

          以下代碼請參考:teambiz\WebRoot\page\jsp\user\register\javascript.jsp

          1.初始化FormChecker及添加驗證項目

          formChecker=new FormChecker();

          formChecker.addCheckItem("userName","請輸入二到五位漢字的用戶名","[\\u4E00-\\u9FA5]{2,5}","true");

          formChecker.addCheckItem("userPswd","請輸5位以上,最長20位的字母或數字組成的密碼","(\\w){5,20}","true");

          formChecker.addCheckItem("userPswd2","請輸5位以上,最長20位的字母或數字組成的密碼","(\\w){5,20}","true");

          formChecker.addCheckItem("email","請輸入您的電子郵件","\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\.\\w+([-.]\\w+)*","true");

           

          2.得到表單的驗證結果

          function getCheckResult(){

                      // 進行頁面輸入檢查

                      if(formChecker.isValid()==false){

                                  return false;

                      }

                     

                      var userPswd=$("userPswd").value;

                      var userPswd2=$("userPswd2").value;

                     

                      if(userPswd!=userPswd2){

                                  $("userPswd2").focus();

                                  alert("前后兩次密碼必須一致.");

                                  return false;

                      }

                     

                      return true;

          }

          以上粗體部分就是得到FormChecker的驗證結果。由于FormChecker只能對單個組件的文本內容進行正則表達式校驗,無法對對多個組件進行比較,因此如果實際需要其它的驗證項,可以在getCheckResult函數中進行添加。

          3.注冊按鈕點擊時間后的響應函數:

          $("registerBtn").onclick=function(){

                      if(getCheckResult()==true){

                                  submitForm();

                      }

          };

           

          第五部分:使用步驟

          步驟

          說明

          參照

          載入這批函數

          teambiz中,這一載入一般放在style.css中。

          <script src="page/js/formchecker.js" type="text/javascript"></script>

          window_onload函數中初始化表單驗證器并增添檢查項。

           

          formChecker=new FormChecker();

          formChecker.addCheckItem("userName","請輸入二到五位漢字的用戶名","[\\u4E00-\\u9FA5]{2,5}","true");

          formChecker.addCheckItem("userPswd","請輸5位以上,最長20位的字母或數字組成的密碼","(\\w){5,20}","true");

          formChecker.addCheckItem("userPswd2","請輸5位以上,最長20位的字母或數字組成的密碼","(\\w){5,20}","true");

          formChecker.addCheckItem("email","請輸入您的電子郵件","\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\.\\w+([-.]\\w+)*","true");

          使用FormChecker的isValid函數來得到驗證結果。

           

          function getCheckResult(){

                      // 進行頁面輸入檢查

                      if(formChecker.isValid()==false){

                                  return false;

                      }

                     

                      ……

                     

                      return true;

          }

          注冊按鈕點擊時間后的響應函數

           

          $("registerBtn").onclick=function(){

                      if(getCheckResult()==true){

                                  submitForm();

                      }

          };

           

          第六部分:小結

          進行表單元素驗證是程序員不得不做卻又較為乏味的工作之一,FormChecker類能有助于減輕他們的負擔,從而使得用正則表達式驗證文本內容的工作變得簡單,程序員只需要在正則表達式的編寫上下些功夫或者求助于網絡。

          FormChecker的不足之處是驗證模式單一,驗證邏輯比較簡單,但對于驗證,似乎也沒有多少共性的需求了,如果有希望大家能賜教。

          posted on 2012-02-29 10:41 何楊 閱讀(487) 評論(0)  編輯  收藏 所屬分類: Teambiz
          主站蜘蛛池模板: 阆中市| 外汇| 神农架林区| 博乐市| 遂昌县| 黄龙县| 内黄县| 米脂县| 永和县| 项城市| 旬阳县| 宁夏| 上犹县| 灵宝市| 巴南区| 柞水县| 南宫市| 陈巴尔虎旗| 南昌县| 含山县| 商都县| 安达市| 文安县| 达日县| 元江| 通江县| 泰宁县| 南丰县| 陇西县| 晋宁县| 商城县| 收藏| 蒙阴县| 临洮县| 武清区| 洪湖市| 墨竹工卡县| 肥西县| 宜昌市| 宁远县| 陆河县|