類代碼: /************************* * * 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; }
頁面代碼:
/***************************************************** * 窗口載入時調用的啟動函數 *****************************************************/ var formChecker; window.onload=function(){ // 設置主菜單的當前菜單項 setMainmenuCurrentItem(0); // 設置側邊菜單的當前菜單項 setSidemenuCurrentItemByText("合同起草"); // 取得合同類別的數據 // 填充下拉列表框數據 new TypeListbox("contractTypeFirst","0","contractTypeSecond",""); new TypeListbox("contractTypeSecond",$("contractTypeFirst").value,"contractTypeThird",""); // var today=getToday(); // $("createTime").value=today; // 屏蔽了合同起草時間,故這里也屏蔽。何楊,2011年5月6日9:20:34 // $("maintenanceEndTime").value=today; // 初始化檢查項 formChecker=new FormChecker(); formChecker.addCheckItem("contractName","請輸入一到一百位的合同名",".{1,100}","true"); formChecker.addCheckItem("contractTypeThird","請點擊下拉列表框依次選擇合同類別",".{1,100}","true"); formChecker.addCheckItem("contractAmount","請輸入數字形式的合同總金額(金額限制百億內)","([0-9]{1})(\\d{0,9})","true"); formChecker.addCheckItem("vendorName","請點擊右邊圖標選擇合同對方名稱。",".{1,}","true"); formChecker.addCheckItem("fulfillCycle","請輸入數字形式的合同履行期限,以月為單位(最多十位數字)","([1-9]{1})(\\d{0,9})","true"); formChecker.addCheckItem("maintenanceStartTime","請點擊右邊的按鈕選擇模板選擇維保起始日期","(\\d{4})-(\\d{1,2})-(\\d{1,2})","false"); formChecker.addCheckItem("maintenanceEndTime","請點擊右邊的按鈕選擇模板選擇維保結束日期","(\\d{4})-(\\d{1,2})-(\\d{1,2})","false"); formChecker.addCheckItem("contractBriefFile","請輸入零到五百字的合同所屬項目概況或依據的文件",".{1,500}","false"); formChecker.addCheckItem("contractDecision","請輸入零到一千字的項目決策過程",".{1,1000}","false"); formChecker.addCheckItem("remark","請輸入零到兩百五十個字的補充說明",".{1,250}","false"); formChecker.addCheckItem("maintenanceDescription","請輸入零到一千個字的維保描述",".{1,1000}","false"); }
/********************************************************************* * 得到表單的檢查結果 * 何楊,2011-4-17 14:31:40 *********************************************************************/ function getCheckResult(){ // 進行頁面輸入檢查 if(formChecker.isValid()==false){ return false; } // 維保起始日期 var maintenanceStartTime=$("maintenanceStartTime").value; // 維保結束日期 var maintenanceEndTime=$("maintenanceEndTime").value; // 維保起始日期和維保結束日期做比較 if(isNotEmptyString(maintenanceStartTime)==true && isNotEmptyString(maintenanceEndTime)==true){ if(isReasonable(maintenanceStartTime,maintenanceEndTime)==false){ alert("維保結束日期必須晚于維保起始日期."); $("maintenanceEndTime").focus(); return false; } } return true; }
|