原貼地址:
http://www.javaeye.com/topic/30759/**
* 取得字符串的字節長度
*/
代碼
- function?strlen(str) ??
- { ??
- ????var?i; ??
- ????var?len; ??
- ???? ??
- ????len?=?0; ??
- ????for?(i=0;i<str.length;i++) ??
- ????{ ??
- ????????if?(str.charCodeAt(i)>255)?len+=2;?else?len++; ??
- ????} ??
- ????return?len; ??
- } ??
- ???
/*
* 判斷是否為數字,是則返回true,否則返回false
*/
代碼
- function?f_check_number(obj) ??
- {??????? ??
- ????if?(/^\d+$/.test(obj.value)) ??
- ????{ ??
- ???????return?true; ??
- ????}? ??
- ????else? ??
- ????{ ??
- ???????f_alert(obj,"請輸入數字"); ??
- ???????return?false; ??
- ????} ??
- } ??
- ???
/*
* 判斷是否為自然數,是則返回true,否則返回false
*/
代碼
- function?f_check_naturalnumber(obj) ??
- {??????? ??
- ????var?s?=?obj.value; ??
- ????if?(/^[0-9]+$/.test(?s?)?&&?(s?>?0)) ??
- ????{ ??
- ???????return?true; ??
- ????}? ??
- ????else? ??
- ????{ ??
- ????????f_alert(obj,"請輸入自然數"); ??
- ????????return?false; ??
- ????} ??
- } ??
- ???
/*
* 判斷是否為整數,是則返回true,否則返回false
*/
代碼
- function?f_check_integer(obj) ??
- {??????? ??
- ????if?(/^(\+|-)?\d+$/.test(?obj.value?))? ??
- ????{ ??
- ???????return?true; ??
- ????}? ??
- ????else? ??
- ????{ ??
- ????????f_alert(obj,"請輸入整數"); ??
- ????????return?false; ??
- ????} ??
- } ??
- ???
/*
* 判斷是否為實數,是則返回true,否則返回false
*/
代碼
- function?f_check_float(obj) ??
- {??????? ??
- ????if?(/^(\+|-)?\d+($|\.\d+$)/.test(?obj.value?))? ??
- ????{ ??
- ???????return?true; ??
- ????}? ??
- ????else? ??
- ????{ ??
- ????????f_alert(obj,"請輸入實數"); ??
- ???????return?false; ??
- ????} ??
- } ??
- ???
/*
* 校驗數字的長度和精度
*/
代碼
- function?f_check_double(obj){ ??
- ????var?numReg; ??
- ????var?value?=?obj.value; ??
- ????var?strValueTemp,?strInt,?strDec;??? ??
- ????var?dtype?=?obj.eos_datatype; ??
- ????var?pos_dtype?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")).split(","); ??
- ????var?len?=?pos_dtype[0],?prec?=?pos_dtype[1]; ??
- ????try??
- ????{??????? ??
- ????????numReg?=/[\-]/; ??
- ????????strValueTemp?=?value.replace(numReg,?""); ??
- ????????numReg?=/[\+]/; ??
- ????????strValueTemp?=?strValueTemp.replace(numReg,?""); ??
- ??????????
- ????????if(prec==0){ ??
- ????????????numReg?=/[\.]/; ??
- ????????????if(numReg.test(value)?==?true){ ??
- ????????????????f_alert(obj,?"輸入必須為整數類型"); ??
- ????????????????return?false;??? ??
- ????????????}??????????? ??
- ????????}??????? ??
- ????????if(strValueTemp.indexOf(".")?<?0?){ ??
- ????????????if(strValueTemp.length?>(?len?-?prec)){ ??
- ????????????????f_alert(obj,?"整數位不能超過"+?(len?-?prec)?+"位"); ??
- ????????????????return?false; ??
- ????????????}??????? ??
- ????????}else{ ??
- ????????????strInt?=?strValueTemp.substr(?0,?strValueTemp.indexOf(".")?);??????? ??
- ????????????if(strInt.length?>(?len?-?prec)){ ??
- ????????????????f_alert(obj,?"整數位不能超過"+?(len?-?prec)?+"位"); ??
- ????????????????return?false; ??
- ????????????} ??
- ????????????strDec?=?strValueTemp.substr(?(strValueTemp.indexOf(".")+1),?strValueTemp.length?);? ??
- ????????????if(strDec.length?>?prec){ ??
- ????????????????f_alert(obj,?"小數位不能超過"+??prec?+"位"); ??
- ????????????????return?false; ??
- ????????????}??????? ??
- ????????}??????? ??
- ????????return?true; ??
- ????}catch(e){ ??
- ????????alert("in?f_check_double?=?"?+?e); ??
- ????????return?false; ??
- ????}??? ??
- } ??
- ???
/*
* 校驗數字的最小最大值
* 返回bool
*/
代碼
- function?f_check_interval(obj) ??
- { ??
- ????var?value?=?parseFloat(obj.value); ??
- ??
- ????var?dtype?=?obj.eos_datatype; ??
- ????var?pos_dtype?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")).split(","); ??
- ???? ??
- ????var?minLimit?=?pos_dtype[0]; ??
- ????var?maxLimit?=?pos_dtype[1]; ??
- ????var?minVal?=?parseFloat(pos_dtype[0]); ??
- ????var?maxVal?=?parseFloat(pos_dtype[1]);? ??
- ???? ??
- ????if(isNaN(value)) ??
- ????{ ??
- ????????f_alert(obj,?"值必須為數字"); ??
- ????????return?false; ??
- ????} ??
- ????if((isNaN(minVal)?&&?(minLimit?!=?"-"))?||?(isNaN(maxVal)?&&?(maxLimit?!=?"+"))) ??
- ????{ ??
- ????????f_alert(obj,?"邊界值必須為數字或-、+"); ??
- ????????return?false; ??
- ????} ??
- ??
- ????if(minLimit?==?"-"?&&?!isNaN(maxVal)) ??
- ????{ ??
- ????????if(value?>?maxVal) ??
- ????????{ ??
- ????????????f_alert(obj,?"值不能超過"?+?maxVal); ??
- ????????????return?false; ??
- ????????} ??
- ????} ??
- ???? ??
- ????if(!isNaN(minVal)?&&?maxLimit?==?"+") ??
- ????{??????? ??
- ????????if(value?<?minVal) ??
- ????????{ ??
- ????????????f_alert(obj,?"值不能小于"?+?minVal); ??
- ????????????return?false; ??
- ????????} ??
- ????} ??
- ???? ??
- ????if(!isNaN(minVal)?&&?!isNaN(maxVal)) ??
- ????{ ??
- ????????if(minVal?>?maxVal) ??
- ????????{ ??
- ????????????f_alert(obj,?"起始值"?+?minVal?+?"不能大于終止值"?+?maxVal); ??
- ????????}else??
- ????????{ ??
- ????????????if(!(value?<=?maxVal?&&?value?>=?minVal)) ??
- ????????????{ ??
- ????????????????f_alert(obj,?"值應該在"?+?minVal?+?"和"?+?maxVal?+?"之間"); ??
- ????????????????return?false; ??
- ????????????} ??
- ????????} ??
- ????} ??
- ????return?true; ??
- } ??
- ???
/*
用途:檢查輸入字符串是否只由漢字組成
如果通過驗證返回true,否則返回false
*/
代碼
- function?f_check_zh(obj){ ??
- ????if?(/^[\u4e00-\u9fa5]+$/.test(obj.value))?{ ??
- ??????return?true; ??
- ????} ??
- ????f_alert(obj,"請輸入漢字"); ??
- ????return?false; ??
- } ??
- ???
/*
* 判斷是否為小寫英文字母,是則返回true,否則返回false
*/
代碼
- function?f_check_lowercase(obj) ??
- {??????? ??
- ????if?(/^[a-z]+$/.test(?obj.value?))? ??
- ????{ ??
- ???????return?true; ??
- ????}? ??
- ????f_alert(obj,"請輸入小寫英文字母"); ??
- ????return?false; ??
- } ??
- ???
/*
* 判斷是否為大寫英文字母,是則返回true,否則返回false
*/
代碼
- function?f_check_uppercase(obj) ??
- {??????? ??
- ????if?(/^[A-Z]+$/.test(?obj.value?))? ??
- ????{ ??
- ???????return?true; ??
- ????}? ??
- ????f_alert(obj,"請輸入大寫英文字母"); ??
- ????return?false; ??
- } ??
- ???
/*
* 判斷是否為英文字母,是則返回true,否則返回false
*/
代碼
- function?f_check_letter(obj) ??
- {??????? ??
- ????if?(/^[A-Za-z]+$/.test(?obj.value?))? ??
- ????{ ??
- ???????return?true; ??
- ????}? ??
- ????f_alert(obj,"請輸入英文字母"); ??
- ????return?false; ??
- } ??
- ???
/*
用途:檢查輸入字符串是否只由漢字、字母、數字組成
輸入:
value:字符串
返回:
如果通過驗證返回true,否則返回false
*/
代碼
- function?f_check_ZhOrNumOrLett(obj){??????
- ????var?regu?=?"^[0-9a-zA-Z\u4e00-\u9fa5]+$";??? ??
- ????var?re?=?new?RegExp(regu); ??
- ????if?(re.test(?obj.value?))?{ ??
- ??????return?true; ??
- ????} ??
- ????f_alert(obj,"請輸入漢字、字母或數字"); ??
- ????return?false; ??
- } ??
- ???
/*
用途:校驗ip地址的格式
輸入:strIP:ip地址
返回:如果通過驗證返回true,否則返回false;
*/
代碼
- function?f_check_IP(obj)? ??
- {? ??
- ????var?re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;???
- ????if(re.test(?obj.value?)) ??
- ????{ ??
- ????????if(?RegExp.$1?<256?&&?RegExp.$2<256?&&?RegExp.$3<256?&&?RegExp.$4<256)?return?true; ??
- ????} ??
- ????f_alert(obj,"請輸入合法的計算機IP地址"); ??
- ????return?false;? ??
- } ??
- ???
/*
用途:檢查輸入對象的值是否符合端口號格式
輸入:str 輸入的字符串
返回:如果通過驗證返回true,否則返回false
*/
代碼
- function?f_check_port(obj) ??
- { ??
- ????if(!f_check_number(obj)) ??
- ????????return?false; ??
- ????if(obj.value?<?65536) ??
- ????????return?true; ??
- ????f_alert(obj,"請輸入合法的計算機IP地址端口號"); ??
- ????return?false;? ??
- } ??
- ???
/*
用途:檢查輸入對象的值是否符合網址格式
輸入:str 輸入的字符串
返回:如果通過驗證返回true,否則返回false
*/
代碼
- function?f_check_URL(obj){?? ??
- ????var?myReg?=?/^((http:[/][/])?\w+([.]\w+|[/]\w*)*)?$/;? ??
- ????if(myReg.test(?obj.value?))?return?true;? ??
- ????f_alert(obj,"請輸入合法的網頁地址"); ??
- ????return?false;? ??
- } ??
- ???
/*
用途:檢查輸入對象的值是否符合E-Mail格式
輸入:str 輸入的字符串
返回:如果通過驗證返回true,否則返回false
*/
代碼
- function?f_check_email(obj){?? ??
- ????var?myReg?=?/^([-_A-Za-z0-9\.]+)@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;? ??
- ????if(myReg.test(?obj.value?))?return?true;? ??
- ????f_alert(obj,"請輸入合法的電子郵件地址"); ??
- ????return?false;? ??
- } ??
- ???
/*
要求:一、移動電話號碼為11或12位,如果為12位,那么第一位為0
二、11位移動電話號碼的第一位和第二位為"13"
三、12位移動電話號碼的第二位和第三位為"13"
用途:檢查輸入手機號碼是否正確
輸入:
s:字符串
返回:
如果通過驗證返回true,否則返回false
*/
代碼
- function?f_check_mobile(obj){??? ??
- ????var?regu?=/(^[1][3][0-9]{9}$)|(^0[1][3][0-9]{9}$)/; ??
- ????var?re?=?new?RegExp(regu); ??
- ????if?(re.test(?obj.value?))?{ ??
- ??????return?true; ??
- ????} ??
- ????f_alert(obj,"請輸入正確的手機號碼"); ??
- ????return?false;??? ??
- } ??
- ???
/*
要求:一、電話號碼由數字、"("、")"和"-"構成
二、電話號碼為3到8位
三、如果電話號碼中包含有區號,那么區號為三位或四位
四、區號用"("、")"或"-"和其他部分隔開
用途:檢查輸入的電話號碼格式是否正確
輸入:
strPhone:字符串
返回:
如果通過驗證返回true,否則返回false
*/
代碼
- function?f_check_phone(obj)? ??
- { ??
- ????var?regu?=/(^([0][1-9]{2,3}[-])?\d{3,8}(-\d{1,6})?$)|(^\([0][1-9]{2,3}\)\d{3,8}(\(\d{1,6}\))?$)|(^\d{3,8}$)/;? ??
- ????var?re?=?new?RegExp(regu); ??
- ????if?(re.test(?obj.value?))?{ ??
- ??????return?true; ??
- ????} ??
- ????f_alert(obj,"請輸入正確的電話號碼"); ??
- ????return?false; ??
- } ??
- ???
/* 判斷是否為郵政編碼 */
代碼
- function?f_check_zipcode(obj) ??
- { ??
- ????if(!f_check_number(obj)) ??
- ????????return?false; ??
- ????if(obj.value.length!=6) ??
- ????{ ??
- ????????f_alert(obj,"郵政編碼長度必須是6位"); ??
- ????????return?false; ??
- ????} ??
- ????return?true; ??
- } ??
- ???
/*
用戶ID,可以為數字、字母、下劃線的組合,
第一個字符不能為數字,且總長度不能超過20。
*/
代碼
- function?f_check_userID(obj) ??
- { ??
- ????var?userID?=?obj.value; ??
- ????if(userID.length?>?20) ??
- ????{ ??
- ????????f_alert(obj,"ID長度不能大于20"); ??
- ????????return?false; ??
- ????} ??
- ??
- ????if(!isNaN(userID.charAt(0))) ??
- ????{ ??
- ????????f_alert(obj,"ID第一個字符不能為數字"); ??
- ????????return?false; ??
- ????} ??
- ????if(!/^\w{1,20}$/.test(userID))? ??
- ????{ ??
- ????????f_alert(obj,"ID只能由數字、字母、下劃線組合而成"); ??
- ????????return?false; ??
- ????} ??
- ????return?true; ??
- } ??
- ???
/*
功能:驗證身份證號碼是否有效
提示信息:未輸入或輸入身份證號不正確!
使用:f_check_IDno(obj)
返回:bool
*/
代碼
- function?f_check_IDno(obj) ??
- {? ??
- ????var?aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南",42:"湖北",43:"湖南",44:"廣東",45:"廣西",46:"海南",50:"重慶",51:"四川",52:"貴州",53:"云南",54:"西藏",61:"陜西",62:"甘肅",63:"青海",64:"寧夏",65:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外"}; ??
- ? ??
- ????var?iSum?=?0; ??
- ????var?info?=?""; ??
- ????var?strIDno?=?obj.value; ??
- ????var?idCardLength?=?strIDno.length;?? ??
- ????if(!/^\d{17}(\d|x)$/i.test(strIDno)&&!/^\d{15}$/i.test(strIDno))? ??
- ????{ ??
- ????????f_alert(obj,"非法身份證號"); ??
- ????????return?false; ??
- ????} ??
- ? ??
- ??????
- ????strIDno?=?strIDno.replace(/x$/i,"a"); ??
- ??
- ????if(aCity[parseInt(strIDno.substr(0,2))]==null) ??
- ????{ ??
- ????????f_alert(obj,"非法地區"); ??
- ????????return?false; ??
- ????} ??
- ???? ??
- ????if?(idCardLength==18) ??
- ????{ ??
- ????????sBirthday=strIDno.substr(6,4)+"-"+Number(strIDno.substr(10,2))+"-"+Number(strIDno.substr(12,2)); ??
- ????????var?d?=?new?Date(sBirthday.replace(/-/g,"/")) ??
- ????????if(sBirthday!=(d.getFullYear()+"-"+?(d.getMonth()+1)?+?"-"?+?d.getDate())) ??
- ????????{??????? ??
- ????????????f_alert(obj,"非法生日"); ??
- ????????????return?false; ??
- ????????} ??
- ??
- ????????for(var?i?=?17;i>=0;i?--) ??
- ????????????iSum?+=?(Math.pow(2,i)?%?11)?*?parseInt(strIDno.charAt(17?-?i),11); ??
- ??
- ????????if(iSum%11!=1) ??
- ????????{ ??
- ????????????f_alert(obj,"非法身份證號"); ??
- ????????????return?false; ??
- ????????} ??
- ????} ??
- ????else?if?(idCardLength==15) ??
- ????{ ??
- ????????sBirthday?=?"19"?+?strIDno.substr(6,2)?+?"-"?+?Number(strIDno.substr(8,2))?+?"-"?+?Number(strIDno.substr(10,2)); ??
- ????????var?d?=?new?Date(sBirthday.replace(/-/g,"/")) ??
- ????????var?dd?=?d.getFullYear().toString()?+?"-"?+?(d.getMonth()+1)?+?"-"?+?d.getDate();??? ??
- ????????if(sBirthday?!=?dd) ??
- ????????{ ??
- ????????????f_alert(obj,"非法生日"); ??
- ????????????return?false; ??
- ????????} ??
- ????} ??
- ????return?true;? ??
- } ??
- ???
/*
* 判斷字符串是否符合指定的正則表達式
*/
代碼
- function?f_check_formatStr(obj) ??
- { ??
- ????var?str?=?obj.value; ??
- ????var?dtype?=?obj.eos_datatype; ??
- ????var?regu?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")"));??????
- ????var?re?=?new?RegExp(regu); ??
- ????if(re.test(str)) ??
- ????????return?true; ??
- ????f_alert(obj?,?"不符合指定的正則表達式要求"); ??
- ????return?false;??? ??
- } ??
- ???
/*
功能:判斷是否為日期(格式:yyyy年MM月dd日,yyyy-MM-dd,yyyy/MM/dd,yyyyMMdd)
提示信息:未輸入或輸入的日期格式錯誤!
使用:f_check_date(obj)
返回:bool
*/
代碼
- function?f_check_date(obj) ??
- { ??
- ????var?date?=?Trim(obj.value); ??
- ????var?dtype?=?obj.eos_datatype; ??
- ????var?format?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")"));????
- ????var?year,month,day,datePat,matchArray; ??
- ??
- ????if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2})$/.test(format)) ??
- ????????datePat?=?/^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2})$/; ??
- ????else?if(/^(y{4})(年)(M{1,2})(月)(d{1,2})(日)$/.test(format)) ??
- ????????datePat?=?/^(\d{4})年(\d{1,2})月(\d{1,2})日$/; ??
- ????else?if(format=="yyyyMMdd") ??
- ????????datePat?=?/^(\d{4})(\d{2})(\d{2})$/; ??
- ????else??
- ????{ ??
- ????????f_alert(obj,"日期格式不對"); ??
- ????????return?false; ??
- ????} ??
- ????matchArray?=?date.match(datePat); ??
- ????if(matchArray?==?null)? ??
- ????{ ??
- ????????f_alert(obj,"日期長度不對,或日期中有非數字符號"); ??
- ????????return?false; ??
- ????} ??
- ????if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2})$/.test(format)) ??
- ????{ ??
- ????????year?=?matchArray[1]; ??
- ????????month?=?matchArray[3]; ??
- ????????day?=?matchArray[4]; ??
- ????}?else??
- ????{ ??
- ????????year?=?matchArray[1]; ??
- ????????month?=?matchArray[2]; ??
- ????????day?=?matchArray[3]; ??
- ????} ??
- ????if?(month?<?1?||?month?>?12) ??
- ????{????????????? ??
- ????????f_alert(obj,"月份應該為1到12的整數"); ??
- ????????return?false; ??
- ????} ??
- ????if?(day?<?1?||?day?>?31) ??
- ????{ ??
- ????????f_alert(obj,"每個月的天數應該為1到31的整數"); ??
- ????????return?false; ??
- ????}????? ??
- ????if?((month==4?||?month==6?||?month==9?||?month==11)?&&?day==31) ??
- ????{ ??
- ????????f_alert(obj,"該月不存在31號"); ??
- ????????return?false; ??
- ????}????? ??
- ????if?(month==2) ??
- ????{ ??
- ????????var?isleap=(year?%?4==0?&&?(year?%?100?!=0?||?year?%?400==0)); ??
- ????????if?(day>29) ??
- ????????{??????????????? ??
- ????????????f_alert(obj,"2月最多有29天"); ??
- ????????????return?false; ??
- ????????} ??
- ????????if?((day==29)?&&?(!isleap)) ??
- ????????{??????????????? ??
- ????????????f_alert(obj,"閏年2月才有29天"); ??
- ????????????return?false; ??
- ????????} ??
- ????} ??
- ????return?true; ??
- } ??
- ???
/*
功能:校驗的格式為yyyy年MM月dd日HH時mm分ss秒,yyyy-MM-dd HH:mm:ss,yyyy/MM/dd HH:mm:ss,yyyyMMddHHmmss
提示信息:未輸入或輸入的時間格式錯誤
使用:f_check_time(obj)
返回:bool
*/
代碼
- function?f_check_time(obj) ??
- { ??
- ????var?time?=?Trim(obj.value); ??
- ????var?dtype?=?obj.eos_datatype; ??
- ????var?format?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")"));????
- ????var?datePat,matchArray,year,month,day,hour,minute,second; ??
- ??
- ????if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2})?(HH:mm:ss)$/.test(format)) ??
- ????????datePat?=?/^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2})?(\d{1,2}):(\d{1,2}):(\d{1,2})$/; ??
- ????else?if(/^(y{4})(年)(M{1,2})(月)(d{1,2})(日)(HH時mm分ss秒)$/.test(format)) ??
- ????????datePat?=?/^(\d{4})年(\d{1,2})月(\d{1,2})日(\d{1,2})時(\d{1,2})分(\d{1,2})秒$/; ??
- ????else?if(format?==?"yyyyMMddHHmmss") ??
- ????????datePat?=?/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/; ??
- ????else??
- ????{ ??
- ????????f_alert(obj,"日期格式不對"); ??
- ????????return?false; ??
- ????} ??
- ????matchArray?=?time.match(datePat); ??
- ????if(matchArray?==?null)? ??
- ????{ ??
- ????????f_alert(obj,"日期長度不對,或日期中有非數字符號"); ??
- ????????return?false; ??
- ????} ??
- ????if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2})?(HH:mm:ss)$/.test(format)) ??
- ????{ ??
- ????????year?=?matchArray[1]; ??
- ????????month?=?matchArray[3]; ??
- ????????day?=?matchArray[4]; ??
- ????????hour?=?matchArray[5]; ??
- ????????minute?=?matchArray[6]; ??
- ????????second?=?matchArray[7]; ??
- ????}?else??
- ????{ ??
- ????????year?=?matchArray[1]; ??
- ????????month?=?matchArray[2]; ??
- ????????day?=?matchArray[3]; ??
- ????????hour?=?matchArray[4]; ??
- ????????minute?=?matchArray[5]; ??
- ????????second?=?matchArray[6]; ??
- ????} ??
- ????if?(month?<?1?||?month?>?12) ??
- ????{????????????? ??
- ????????f_alert(obj,"月份應該為1到12的整數"); ??
- ????????return?false; ??
- ????} ??
- ????if?(day?<?1?||?day?>?31) ??
- ????{??????????? ??
- ????????f_alert(obj,"每個月的天數應該為1到31的整數"); ??
- ????????return?false; ??
- ????}????? ??
- ????if?((month==4?||?month==6?||?month==9?||?month==11)?&&?day==31) ??
- ????{????????? ??
- ????????f_alert(obj,"該月不存在31號"); ??
- ????????return?false; ??
- ????}????? ??
- ????if?(month==2) ??
- ????{ ??
- ????????var?isleap=(year?%?4==0?&&?(year?%?100?!=0?||?year?%?400==0)); ??
- ????????if?(day>29) ??
- ????????{??????????????? ??
- ????????????f_alert(obj,"2月最多有29天"); ??
- ????????????return?false; ??
- ????????} ??
- ????????if?((day==29)?&&?(!isleap)) ??
- ????????{??????????????? ??
- ????????????f_alert(obj,"閏年2月才有29天"); ??
- ????????????return?false; ??
- ????????} ??
- ????} ??
- ????if(hour<0?||?hour>23) ??
- ????{ ??
- ????????f_alert(obj,"小時應該是0到23的整數"); ??
- ????????return?false; ??
- ????} ??
- ????if(minute<0?||?minute>59) ??
- ????{ ??
- ????????f_alert(obj,"分應該是0到59的整數"); ??
- ????????return?false; ??
- ????} ??
- ????if(second<0?||?second>59) ??
- ????{ ??
- ????????f_alert(obj,"秒應該是0到59的整數"); ??
- ????????return?false; ??
- ????} ??
- ????return?true; ??
- } ??
- ???
/*判斷當前對象是否可見*/
代碼
- function?isVisible(obj){ ??
- ????var?visAtt,disAtt; ??
- ????try{ ??
- ????????disAtt=obj.style.display; ??
- ????????visAtt=obj.style.visibility; ??
- ????}catch(e){} ??
- ????if(disAtt=="none"?||?visAtt=="hidden") ??
- ????????return?false; ??
- ????return?true; ??
- } ??
- ???
/*判斷當前對象及其父對象是否可見*/
代碼
- function?checkPrVis(obj){ ??
- ????var?pr=obj.parentNode; ??
- ????do{ ??
- ????????if(pr?==?undefined?||?pr?==?"undefined")?return?true; ??
- ????????else{ ??
- ????????????if(!isVisible(pr))?return?false; ??
- ????????} ??
- ????}while(pr=pr.parentNode); ??
- ????return?true; ??
- } ??
- ???
/* 彈出警告對話框,用戶點確定后將光標置于出錯文本框上, 并且將原來輸入內容選中。*/
代碼
- function?f_alert(obj,alertInfo) ??
- { ??
- ????var?caption?=?obj.getAttribute("eos_displayname"); ??
- ????if(caption?==?null) ??
- ????????caption?=?""; ??
- ????alert(caption?+?":"?+?alertInfo?+?"!");? ??
- ????obj.select(); ??
- ????if(isVisible(obj)?&&?checkPrVis(obj)) ??
- ????????obj.focus(); ??
- } ??
- ???
/**
* 檢測字符串是否為空
*/
代碼
- function?isnull(str) ??
- { ??
- ????var?i; ??
- ????if(str.length?==?0) ??
- ????????return?true; ??
- ????for?(i=0;i<str.length;i++) ??
- ????{ ??
- ????????if?(str.charAt(i)!='?')? ??
- ????????????return?false; ??
- ????} ??
- ????return?true; ??
- } ??
- ???
/**
* 檢測指定文本框輸入是否合法。
* 如果用戶輸入的內容有錯,則彈出提示對話框,
* 同時將焦點置于該文本框上,并且該文本框前面
* 會出現一個警告圖標(輸入正確后會自動去掉)。
*/
代碼
- function?checkInput(object) ??
- { ??
- ????var?image; ??
- ????var?i; ??
- ????var?length; ??
- ??
- ????if(object.eos_maxsize?+?""?!=?"undefined")?length?=?object.eos_maxsize; ??
- ????else?length?=?0; ??
- ??
- ????if?(object.eos_isnull=="true"?&&?isnull(object.value))??return?true; ??
- ??
- ??????
- ????if(length?!=?0?&&?strlen(object.value)?>?parseInt(length))?{ ??
- ????????????f_alert(object,?"超出最大長度"?+?length); ??
- ????????????return?false; ??
- ????}? ??
- ??????
- ????else?{ ??
- ????????if?(object.eos_datatype?+?""?!=?"undefined") ??
- ????????{??????? ??
- ??
- ????????????var?dtype?=?object.eos_datatype; ??
- ????????????var?objName?=?object.name; ??
- ??????????????
- ????????????if(dtype.indexOf("(")?!=?-1) ??
- ????????????????dtype?=?dtype.substring(0,dtype.indexOf("(")); ??
- ??????????????
- ????????????try{ ??
- ????????????????if(eval("f_check_"?+?dtype?+?"(object)")?!=?true) ??
- ????????????????????return?false; ??
- ????????????}catch(e){return?true;} ??
- ?????????????
- ??
- ????????????if(objName.substring((objName.length-3),objName.length)=="min") ??
- ????????????{ ??
- ????????????????var?objMaxName?=?objName.substring(0,?(objName.length-3))?+?"max"; ??
- ????????????????if(document.getElementById(objMaxName)?!=?undefined?&&?document.getElementById(objMaxName)?!=?"undefined"?) ??
- ????????????????{ ??
- ????????????????????if(checkIntervalObjs(object,?document.getElementById(objMaxName))?!=?true) ??
- ????????????????????????return?false;??????????????????? ??
- ????????????????} ??
- ????????????}??????????? ??
- ????????} ??
- ????} ??
- ????return?true; ??
- } ??
- ???
/* 檢測表單中所有輸入項的正確性,一般用于表單的onsubmit事件 */
代碼
- function?checkForm(myform) ??
- { ??
- ????var?i; ??
- ????for?(i=0;i<myform.elements.length;i++) ??
- ????{ ??
- ????????????? ??
- ????????if?(myform.elements[i].eos_displayname?+?""?==?"undefined")?continue; ??
- ??????????
- ????????if?(myform.elements[i].eos_isnull=="false"?&&?isnull(myform.elements[i].value)){ ??
- ????????????f_alert(myform.elements[i],"不能為空"); ??
- ????????????return?false; ??
- ????????}??????? ??
- ??????????
- ????????if?(checkInput(myform.elements[i])==false) ??
- ????????????return?false;??????????????? ??
- ????} ??
- ????return?true; ??
- } ??
- ???
/**
* 校驗兩個表單域數據的大小,目前只允許比較日期和數字。
* @param obj1 小值表單域
* @param obj2 大值表單域
*/
代碼
- function?checkIntervalObjs(obj1?,?obj2) ??
- {??? ??
- ????var?caption1?=?obj1.getAttribute("eos_displayname"); ??
- ????var?caption2?=?obj2.getAttribute("eos_displayname"); ??
- ????var?val1?=?parseFloat(obj1.value); ??
- ????var?val2?=?parseFloat(obj2.value); ??
- ??????
- ????if?(obj1.eos_displayname?+?""?==?"undefined"?||?obj2.eos_displayname?+?""?==?"undefined")?{ ??
- ????????return?false; ??
- ????} ??
- ??????
- ????if(f_check_date(obj1)?==?true?&&?f_check_date(obj2)?==?true){ ??
- ????????var?dtype?=?obj1.eos_datatype; ??
- ????????var?format?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")"));????
- ????????val1?=?getDateByFormat(obj1.value,?format); ??
- ????????dtype?=?obj2.eos_datatype; ??
- ????????format?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")"));????
- ????????val2?=?getDateByFormat(obj2.value,?format); ??
- ????????if(val1?>?val2){ ??
- ????????obj2.select(); ??
- ????????if(isVisible(obj)?&&?checkPrVis(obj)) ??
- ????????????obj2.focus(); ??
- ????????alert(caption1?+?"的起始日期不能大于其終止日期!"); ??
- ????????return?false; ??
- ????????} ??
- ????} ??
- ??????
- ????if((isNaN(val1)?&&?!isnull(val1))?||?(isNaN(val2)?&&?!isnull(val2))){ ??
- ????????alert(caption1?+?"的值不全為數字則不能比較!"); ??
- ????????return?false; ??
- ????} ??
- ????if(val1?>?val2){ ??
- ????????obj2.select(); ??
- ????????if(isVisible(obj)?&&?checkPrVis(obj)) ??
- ????????????obj2.focus(); ??
- ????????alert(caption1?+?"的起始值不能大于其終止值!"); ??
- ????????return?false; ??
- ????} ??
- ????return?true; ??
- } ??
- ???
/*根據日期格式,將字符串轉換成Date對象。
格式:yyyy-年,MM-月,dd-日,HH-時,mm-分,ss-秒。
(格式必須寫全,例如:yy-M-d,是不允許的,否則返回null;格式與實際數據不符也返回null。)
默認格式:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd。*/
代碼
- function?getDateByFormat(str){ ??
- ????var?dateReg,format; ??
- ????var?y,M,d,H,m,s,yi,Mi,di,Hi,mi,si; ??
- ????if((arguments[1]?+?"")?==?"undefined")?format?=?"yyyy-MM-dd?HH:mm:ss"; ??
- ????else?format?=?arguments[1]; ??
- ????yi?=?format.indexOf("yyyy"); ??
- ????Mi?=?format.indexOf("MM"); ??
- ????di?=?format.indexOf("dd"); ??
- ????Hi?=?format.indexOf("HH"); ??
- ????mi?=?format.indexOf("mm"); ??
- ????si?=?format.indexOf("ss"); ??
- ????if(yi?==?-1?||?Mi?==?-1?||?di?==?-1)?return?null; ??
- ????else{ ??
- ????????y?=?parseInt(str.substring(yi,?yi+4)); ??
- ????????M?=?parseInt(str.substring(Mi,?Mi+2)); ??
- ????????d?=?parseInt(str.substring(di,?di+2)); ??
- ????} ??
- ????if(isNaN(y)?||?isNaN(M)?||?isNaN(d))?return?null; ??
- ????if(Hi?==?-1?||?mi?==?-1?||?si?==?-1)?return?new?Date(y,?M-1,?d); ??
- ????else{ ??
- ????????H?=?str.substring(Hi,?Hi+4); ??
- ????????m?=?str.substring(mi,?mi+2); ??
- ????????s?=?str.substring(si,?si+2); ??
- ????} ??
- ????if(isNaN(parseInt(y))?||?isNaN(parseInt(M))?||?isNaN(parseInt(d)))?return?new?Date(y,?M-1,?d); ??
- ????else?return?new?Date(y,?M-1,?d,H,?m,?s); ??
- } ??
- ???
/*LTrim(string):去除左邊的空格*/
代碼
- function?LTrim(str){ ??
- ????var?whitespace?=?new?String("?\t\n\r"); ??
- ????var?s?=?new?String(str);??? ??
- ??
- ????if?(whitespace.indexOf(s.charAt(0))?!=?-1){ ??
- ????????var?j=0,?i?=?s.length; ??
- ????????while?(j?<?i?&&?whitespace.indexOf(s.charAt(j))?!=?-1){ ??
- ????????????j++; ??
- ????????} ??
- ????????s?=?s.substring(j,?i); ??
- ????} ??
- ????return?s; ??
- } ??
- ???
/*RTrim(string):去除右邊的空格*/
代碼
- function?RTrim(str){ ??
- ????var?whitespace?=?new?String("?\t\n\r"); ??
- ????var?s?=?new?String(str); ??
- ? ??
- ????if?(whitespace.indexOf(s.charAt(s.length-1))?!=?-1){ ??
- ????????var?i?=?s.length?-?1; ??
- ????????while?(i?>=?0?&&?whitespace.indexOf(s.charAt(i))?!=?-1){ ??
- ????????????i--; ??
- ????????} ??
- ????????s?=?s.substring(0,?i+1); ??
- ????} ??
- ????return?s; ??
- } ??
- ???
/*Trim(string):去除字符串兩邊的空格*/
代碼
- function?Trim(str){ ??
- ????return?RTrim(LTrim(str)); ??
- }? ??
- ???
posted on 2006-12-22 14:08
OMG 閱讀(317)
評論(0) 編輯 收藏 所屬分類:
Data validate