Junky's IT Notebook

          統(tǒng)計(jì)

          留言簿(8)

          積分與排名

          WebSphere Studio

          閱讀排行榜

          評(píng)論排行榜

          javaScript通用數(shù)據(jù)類型校驗(yàn)

          /**
          * 取得字符串的字節(jié)長度
          */

          代碼
          1. function?strlen(str) ??
          2. { ??
          3. ????var?i; ??
          4. ????var?len; ??
          5. ???? ??
          6. ????len?=? 0 ; ??
          7. ???? for ?(i= 0 ;i<str.length;i++) ??
          8. ????{ ??
          9. ???????? if ?(str.charCodeAt(i)> 255 )?len+= 2 ;? else ?len++; ??
          10. ????} ??
          11. ???? return ?len; ??
          12. } ??
          13. ???

          /*
          * 判斷是否為數(shù)字,是則返回true,否則返回false
          */
          代碼
          1. function?f_check_number(obj) ??
          2. {??????? ??
          3. ????if?(/^\d+$/.test(obj.value)) ??
          4. ????{ ??
          5. ???????return?true; ??
          6. ????}? ??
          7. ????else? ??
          8. ????{ ??
          9. ???????f_alert(obj,"請(qǐng)輸入數(shù)字"); ??
          10. ???????return?false; ??
          11. ????} ??
          12. } ??
          13. ???

          /*
          * 判斷是否為自然數(shù),是則返回true,否則返回false
          */
          代碼
          1. function?f_check_naturalnumber(obj) ??
          2. {??????? ??
          3. ????var?s?=?obj.value; ??
          4. ????if?(/^[0-9]+$/.test(?s?)?&&?(s?>?0)) ??
          5. ????{ ??
          6. ???????return?true; ??
          7. ????}? ??
          8. ????else? ??
          9. ????{ ??
          10. ????????f_alert(obj,"請(qǐng)輸入自然數(shù)"); ??
          11. ????????return?false; ??
          12. ????} ??
          13. } ??
          14. ???

          /*
          * 判斷是否為整數(shù),是則返回true,否則返回false
          */
          代碼
          1. function?f_check_integer(obj) ??
          2. {??????? ??
          3. ????if?(/^(\+|-)?\d+$/.test(?obj.value?))? ??
          4. ????{ ??
          5. ???????return?true; ??
          6. ????}? ??
          7. ????else? ??
          8. ????{ ??
          9. ????????f_alert(obj,"請(qǐng)輸入整數(shù)"); ??
          10. ????????return?false; ??
          11. ????} ??
          12. } ??
          13. ???

          /*
          * 判斷是否為實(shí)數(shù),是則返回true,否則返回false
          */
          代碼
          1. function?f_check_float(obj) ??
          2. {??????? ??
          3. ????if?(/^(\+|-)?\d+($|\.\d+$)/.test(?obj.value?))? ??
          4. ????{ ??
          5. ???????return?true; ??
          6. ????}? ??
          7. ????else? ??
          8. ????{ ??
          9. ????????f_alert(obj,"請(qǐng)輸入實(shí)數(shù)"); ??
          10. ???????return?false; ??
          11. ????} ??
          12. } ??
          13. ???

          /*
          * 校驗(yàn)數(shù)字的長度和精度
          */
          代碼
          1. function?f_check_double(obj){ ??
          2. ????var?numReg; ??
          3. ????var?value?=?obj.value; ??
          4. ????var?strValueTemp,?strInt,?strDec;??? ??
          5. ????var?dtype?=?obj.eos_datatype; ??
          6. ????var?pos_dtype?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")).split(","); ??
          7. ????var?len?=?pos_dtype[0],?prec?=?pos_dtype[1]; ??
          8. ????try??
          9. ????{??????? ??
          10. ????????numReg?=/[\-]/; ??
          11. ????????strValueTemp?=?value.replace(numReg,?""); ??
          12. ????????numReg?=/[\+]/; ??
          13. ????????strValueTemp?=?strValueTemp.replace(numReg,?""); ??
          14. ????????//整數(shù) ??
          15. ????????if(prec==0){ ??
          16. ????????????numReg?=/[\.]/; ??
          17. ????????????if(numReg.test(value)?==?true){ ??
          18. ????????????????f_alert(obj,?"輸入必須為整數(shù)類型"); ??
          19. ????????????????return?false;??? ??
          20. ????????????}??????????? ??
          21. ????????}??????? ??
          22. ????????if(strValueTemp.indexOf(".")?<?0?){ ??
          23. ????????????if(strValueTemp.length?>(?len?-?prec)){ ??
          24. ????????????????f_alert(obj,?"整數(shù)位不能超過"+?(len?-?prec)?+"位"); ??
          25. ????????????????return?false; ??
          26. ????????????}??????? ??
          27. ????????}else{ ??
          28. ????????????strInt?=?strValueTemp.substr(?0,?strValueTemp.indexOf(".")?);??????? ??
          29. ????????????if(strInt.length?>(?len?-?prec)){ ??
          30. ????????????????f_alert(obj,?"整數(shù)位不能超過"+?(len?-?prec)?+"位"); ??
          31. ????????????????return?false; ??
          32. ????????????} ??
          33. ????????????strDec?=?strValueTemp.substr(?(strValueTemp.indexOf(".")+1),?strValueTemp.length?);? ??
          34. ????????????if(strDec.length?>?prec){ ??
          35. ????????????????f_alert(obj,?"小數(shù)位不能超過"+??prec?+"位"); ??
          36. ????????????????return?false; ??
          37. ????????????}??????? ??
          38. ????????}??????? ??
          39. ????????return?true; ??
          40. ????}catch(e){ ??
          41. ????????alert("in?f_check_double?=?"?+?e); ??
          42. ????????return?false; ??
          43. ????}??? ??
          44. } ??
          45. ???

          /*
          * 校驗(yàn)數(shù)字的最小最大值
          * 返回bool
          */
          代碼
          1. function?f_check_interval(obj) ??
          2. { ??
          3. ????var?value?=?parseFloat(obj.value); ??
          4. ??
          5. ????var?dtype?=?obj.eos_datatype; ??
          6. ????var?pos_dtype?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")).split(","); ??
          7. ???? ??
          8. ????var?minLimit?=?pos_dtype[0]; ??
          9. ????var?maxLimit?=?pos_dtype[1]; ??
          10. ????var?minVal?=?parseFloat(pos_dtype[0]); ??
          11. ????var?maxVal?=?parseFloat(pos_dtype[1]);? ??
          12. ???? ??
          13. ????if(isNaN(value)) ??
          14. ????{ ??
          15. ????????f_alert(obj,?"值必須為數(shù)字"); ??
          16. ????????return?false; ??
          17. ????} ??
          18. ????if((isNaN(minVal)?&&?(minLimit?!=?"-"))?||?(isNaN(maxVal)?&&?(maxLimit?!=?"+"))) ??
          19. ????{ ??
          20. ????????f_alert(obj,?"邊界值必須為數(shù)字或-、+"); ??
          21. ????????return?false; ??
          22. ????} ??
          23. ??
          24. ????if(minLimit?==?"-"?&&?!isNaN(maxVal)) ??
          25. ????{ ??
          26. ????????if(value?>?maxVal) ??
          27. ????????{ ??
          28. ????????????f_alert(obj,?"值不能超過"?+?maxVal); ??
          29. ????????????return?false; ??
          30. ????????} ??
          31. ????} ??
          32. ???? ??
          33. ????if(!isNaN(minVal)?&&?maxLimit?==?"+") ??
          34. ????{??????? ??
          35. ????????if(value?<?minVal) ??
          36. ????????{ ??
          37. ????????????f_alert(obj,?"值不能小于"?+?minVal); ??
          38. ????????????return?false; ??
          39. ????????} ??
          40. ????} ??
          41. ???? ??
          42. ????if(!isNaN(minVal)?&&?!isNaN(maxVal)) ??
          43. ????{ ??
          44. ????????if(minVal?>?maxVal) ??
          45. ????????{ ??
          46. ????????????f_alert(obj,?"起始值"?+?minVal?+?"不能大于終止值"?+?maxVal); ??
          47. ????????}else??
          48. ????????{ ??
          49. ????????????if(!(value?<=?maxVal?&&?value?>=?minVal)) ??
          50. ????????????{ ??
          51. ????????????????f_alert(obj,?"值應(yīng)該在"?+?minVal?+?"和"?+?maxVal?+?"之間"); ??
          52. ????????????????return?false; ??
          53. ????????????} ??
          54. ????????} ??
          55. ????} ??
          56. ????return?true; ??
          57. } ??
          58. ???

          /*
          用途:檢查輸入字符串是否只由漢字組成
          如果通過驗(yàn)證返回true,否則返回false
          */
          代碼
          1. function?f_check_zh(obj){ ??
          2. ????if?(/^[\u4e00-\u9fa5]+$/.test(obj.value))?{ ??
          3. ??????return?true; ??
          4. ????} ??
          5. ????f_alert(obj,"請(qǐng)輸入漢字"); ??
          6. ????return?false; ??
          7. } ??
          8. ???

          /*
          * 判斷是否為小寫英文字母,是則返回true,否則返回false
          */
          代碼
          1. function?f_check_lowercase(obj) ??
          2. {??????? ??
          3. ????if?(/^[a-z]+$/.test(?obj.value?))? ??
          4. ????{ ??
          5. ???????return?true; ??
          6. ????}? ??
          7. ????f_alert(obj,"請(qǐng)輸入小寫英文字母"); ??
          8. ????return?false; ??
          9. } ??
          10. ???

          /*
          * 判斷是否為大寫英文字母,是則返回true,否則返回false
          */
          代碼
          1. function?f_check_uppercase(obj) ??
          2. {??????? ??
          3. ????if?(/^[A-Z]+$/.test(?obj.value?))? ??
          4. ????{ ??
          5. ???????return?true; ??
          6. ????}? ??
          7. ????f_alert(obj,"請(qǐng)輸入大寫英文字母"); ??
          8. ????return?false; ??
          9. } ??
          10. ???

          /*
          * 判斷是否為英文字母,是則返回true,否則返回false
          */
          代碼
          1. function?f_check_letter(obj) ??
          2. {??????? ??
          3. ????if?(/^[A-Za-z]+$/.test(?obj.value?))? ??
          4. ????{ ??
          5. ???????return?true; ??
          6. ????}? ??
          7. ????f_alert(obj,"請(qǐng)輸入英文字母"); ??
          8. ????return?false; ??
          9. } ??
          10. ???

          /*
          用途:檢查輸入字符串是否只由漢字、字母、數(shù)字組成
          輸入:
          value:字符串
          返回:
          如果通過驗(yàn)證返回true,否則返回false
          */
          代碼
          1. function?f_check_ZhOrNumOrLett(obj){????//判斷是否是漢字、字母、數(shù)字組成 ??
          2. ????var?regu?=?"^[0-9a-zA-Z\u4e00-\u9fa5]+$";??? ??
          3. ????var?re?=?new?RegExp(regu); ??
          4. ????if?(re.test(?obj.value?))?{ ??
          5. ??????return?true; ??
          6. ????} ??
          7. ????f_alert(obj,"請(qǐng)輸入漢字、字母或數(shù)字"); ??
          8. ????return?false; ??
          9. } ??
          10. ???

          /*
          用途:校驗(yàn)ip地址的格式
          輸入:strIP:ip地址
          返回:如果通過驗(yàn)證返回true,否則返回false;
          */
          代碼
          1. function?f_check_IP(obj)? ??
          2. {? ??
          3. ????var?re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;?//匹配IP地址的正則表達(dá)式 ??
          4. ????if(re.test(?obj.value?)) ??
          5. ????{ ??
          6. ????????if(?RegExp.$1?<256?&&?RegExp.$2<256?&&?RegExp.$3<256?&&?RegExp.$4<256)?return?true; ??
          7. ????} ??
          8. ????f_alert(obj,"請(qǐng)輸入合法的計(jì)算機(jī)IP地址"); ??
          9. ????return?false;? ??
          10. } ??
          11. ???

          /*
          用途:檢查輸入對(duì)象的值是否符合端口號(hào)格式
          輸入:str 輸入的字符串
          返回:如果通過驗(yàn)證返回true,否則返回false
          */
          代碼
          1. function?f_check_port(obj) ??
          2. { ??
          3. ????if(!f_check_number(obj)) ??
          4. ????????return?false; ??
          5. ????if(obj.value?<?65536) ??
          6. ????????return?true; ??
          7. ????f_alert(obj,"請(qǐng)輸入合法的計(jì)算機(jī)IP地址端口號(hào)"); ??
          8. ????return?false;? ??
          9. } ??
          10. ???

          /*
          用途:檢查輸入對(duì)象的值是否符合網(wǎng)址格式
          輸入:str 輸入的字符串
          返回:如果通過驗(yàn)證返回true,否則返回false
          */
          代碼
          1. function?f_check_URL(obj){?? ??
          2. ????var?myReg?=?/^((http:[/][/])?\w+([.]\w+|[/]\w*)*)?$/;? ??
          3. ????if(myReg.test(?obj.value?))?return?true;? ??
          4. ????f_alert(obj,"請(qǐng)輸入合法的網(wǎng)頁地址"); ??
          5. ????return?false;? ??
          6. } ??
          7. ???

          /*
          用途:檢查輸入對(duì)象的值是否符合E-Mail格式
          輸入:str 輸入的字符串
          返回:如果通過驗(yàn)證返回true,否則返回false
          */
          代碼
          1. function?f_check_email(obj){?? ??
          2. ????var?myReg?=?/^([-_A-Za-z0-9\.]+)@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;? ??
          3. ????if(myReg.test(?obj.value?))?return?true;? ??
          4. ????f_alert(obj,"請(qǐng)輸入合法的電子郵件地址"); ??
          5. ????return?false;? ??
          6. } ??
          7. ???

          /*
          要求:一、移動(dòng)電話號(hào)碼為11或12位,如果為12位,那么第一位為0
          二、11位移動(dòng)電話號(hào)碼的第一位和第二位為"13"
          三、12位移動(dòng)電話號(hào)碼的第二位和第三位為"13"
          用途:檢查輸入手機(jī)號(hào)碼是否正確
          輸入:
          s:字符串
          返回:
          如果通過驗(yàn)證返回true,否則返回false
          */
          代碼
          1. function?f_check_mobile(obj){??? ??
          2. ????var?regu?=/(^[1][3][0-9]{9}$)|(^0[1][3][0-9]{9}$)/; ??
          3. ????var?re?=?new?RegExp(regu); ??
          4. ????if?(re.test(?obj.value?))?{ ??
          5. ??????return?true; ??
          6. ????} ??
          7. ????f_alert(obj,"請(qǐng)輸入正確的手機(jī)號(hào)碼"); ??
          8. ????return?false;??? ??
          9. } ??
          10. ???

          /*
          要求:一、電話號(hào)碼由數(shù)字、"("、")"和"-"構(gòu)成
          二、電話號(hào)碼為3到8位
          三、如果電話號(hào)碼中包含有區(qū)號(hào),那么區(qū)號(hào)為三位或四位
          四、區(qū)號(hào)用"("、")"或"-"和其他部分隔開
          用途:檢查輸入的電話號(hào)碼格式是否正確
          輸入:
          strPhone:字符串
          返回:
          如果通過驗(yàn)證返回true,否則返回false
          */
          代碼
          1. function?f_check_phone(obj)? ??
          2. { ??
          3. ????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}$)/;? ??
          4. ????var?re?=?new?RegExp(regu); ??
          5. ????if?(re.test(?obj.value?))?{ ??
          6. ??????return?true; ??
          7. ????} ??
          8. ????f_alert(obj,"請(qǐng)輸入正確的電話號(hào)碼"); ??
          9. ????return?false; ??
          10. } ??
          11. ???

          /* 判斷是否為郵政編碼 */
          代碼
          1. function?f_check_zipcode(obj) ??
          2. { ??
          3. ????if(!f_check_number(obj)) ??
          4. ????????return?false; ??
          5. ????if(obj.value.length!=6) ??
          6. ????{ ??
          7. ????????f_alert(obj,"郵政編碼長度必須是6位"); ??
          8. ????????return?false; ??
          9. ????} ??
          10. ????return?true; ??
          11. } ??
          12. ???

          /*
          用戶ID,可以為數(shù)字、字母、下劃線的組合,
          第一個(gè)字符不能為數(shù)字,且總長度不能超過20。
          */
          代碼
          1. function?f_check_userID(obj) ??
          2. { ??
          3. ????var?userID?=?obj.value; ??
          4. ????if(userID.length?>?20) ??
          5. ????{ ??
          6. ????????f_alert(obj,"ID長度不能大于20"); ??
          7. ????????return?false; ??
          8. ????} ??
          9. ??
          10. ????if(!isNaN(userID.charAt(0))) ??
          11. ????{ ??
          12. ????????f_alert(obj,"ID第一個(gè)字符不能為數(shù)字"); ??
          13. ????????return?false; ??
          14. ????} ??
          15. ????if(!/^\w{1,20}$/.test(userID))? ??
          16. ????{ ??
          17. ????????f_alert(obj,"ID只能由數(shù)字、字母、下劃線組合而成"); ??
          18. ????????return?false; ??
          19. ????} ??
          20. ????return?true; ??
          21. } ??
          22. ???

          /*
          功能:驗(yàn)證身份證號(hào)碼是否有效
          提示信息:未輸入或輸入身份證號(hào)不正確!
          使用:f_check_IDno(obj)
          返回:bool
          */
          代碼
          1. function?f_check_IDno(obj) ??
          2. {? ??
          3. ????var?aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"內(nèi)蒙古",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:"臺(tái)灣",81:"香港",82:"澳門",91:"國外"}; ??
          4. ? ??
          5. ????var?iSum?=?0; ??
          6. ????var?info?=?""; ??
          7. ????var?strIDno?=?obj.value; ??
          8. ????var?idCardLength?=?strIDno.length;?? ??
          9. ????if(!/^\d{17}(\d|x)$/i.test(strIDno)&&!/^\d{15}$/i.test(strIDno))? ??
          10. ????{ ??
          11. ????????f_alert(obj,"非法身份證號(hào)"); ??
          12. ????????return?false; ??
          13. ????} ??
          14. ? ??
          15. ????//在后面的運(yùn)算中x相當(dāng)于數(shù)字10,所以轉(zhuǎn)換成a ??
          16. ????strIDno?=?strIDno.replace(/x$/i,"a"); ??
          17. ??
          18. ????if(aCity[parseInt(strIDno.substr(0,2))]==null) ??
          19. ????{ ??
          20. ????????f_alert(obj,"非法地區(qū)"); ??
          21. ????????return?false; ??
          22. ????} ??
          23. ???? ??
          24. ????if?(idCardLength==18) ??
          25. ????{ ??
          26. ????????sBirthday=strIDno.substr(6,4)+"-"+Number(strIDno.substr(10,2))+"-"+Number(strIDno.substr(12,2)); ??
          27. ????????var?d?=?new?Date(sBirthday.replace(/-/g,"/")) ??
          28. ????????if(sBirthday!=(d.getFullYear()+"-"+?(d.getMonth()+1)?+?"-"?+?d.getDate())) ??
          29. ????????{??????? ??
          30. ????????????f_alert(obj,"非法生日"); ??
          31. ????????????return?false; ??
          32. ????????} ??
          33. ??
          34. ????????for(var?i?=?17;i>=0;i?--) ??
          35. ????????????iSum?+=?(Math.pow(2,i)?%?11)?*?parseInt(strIDno.charAt(17?-?i),11); ??
          36. ??
          37. ????????if(iSum%11!=1) ??
          38. ????????{ ??
          39. ????????????f_alert(obj,"非法身份證號(hào)"); ??
          40. ????????????return?false; ??
          41. ????????} ??
          42. ????} ??
          43. ????else?if?(idCardLength==15) ??
          44. ????{ ??
          45. ????????sBirthday?=?"19"?+?strIDno.substr(6,2)?+?"-"?+?Number(strIDno.substr(8,2))?+?"-"?+?Number(strIDno.substr(10,2)); ??
          46. ????????var?d?=?new?Date(sBirthday.replace(/-/g,"/")) ??
          47. ????????var?dd?=?d.getFullYear().toString()?+?"-"?+?(d.getMonth()+1)?+?"-"?+?d.getDate();??? ??
          48. ????????if(sBirthday?!=?dd) ??
          49. ????????{ ??
          50. ????????????f_alert(obj,"非法生日"); ??
          51. ????????????return?false; ??
          52. ????????} ??
          53. ????} ??
          54. ????return?true;? ??
          55. } ??
          56. ???

          /*
          * 判斷字符串是否符合指定的正則表達(dá)式
          */
          代碼
          1. function?f_check_formatStr(obj) ??
          2. { ??
          3. ????var?str?=?obj.value; ??
          4. ????var?dtype?=?obj.eos_datatype; ??
          5. ????var?regu?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")"));????//指定的正則表達(dá)式 ??
          6. ????var?re?=?new?RegExp(regu); ??
          7. ????if(re.test(str)) ??
          8. ????????return?true; ??
          9. ????f_alert(obj?,?"不符合指定的正則表達(dá)式要求"); ??
          10. ????return?false;??? ??
          11. } ??
          12. ???

          /*
          功能:判斷是否為日期(格式:yyyy年MM月dd日,yyyy-MM-dd,yyyy/MM/dd,yyyyMMdd)
          提示信息:未輸入或輸入的日期格式錯(cuò)誤!
          使用:f_check_date(obj)
          返回:bool
          */
          代碼
          1. function?f_check_date(obj) ??
          2. { ??
          3. ????var?date?=?Trim(obj.value); ??
          4. ????var?dtype?=?obj.eos_datatype; ??
          5. ????var?format?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")"));??//日期格式 ??
          6. ????var?year,month,day,datePat,matchArray; ??
          7. ??
          8. ????if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2})$/.test(format)) ??
          9. ????????datePat?=?/^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2})$/; ??
          10. ????else?if(/^(y{4})(年)(M{1,2})(月)(d{1,2})(日)$/.test(format)) ??
          11. ????????datePat?=?/^(\d{4})年(\d{1,2})月(\d{1,2})日$/; ??
          12. ????else?if(format=="yyyyMMdd") ??
          13. ????????datePat?=?/^(\d{4})(\d{2})(\d{2})$/; ??
          14. ????else??
          15. ????{ ??
          16. ????????f_alert(obj,"日期格式不對(duì)"); ??
          17. ????????return?false; ??
          18. ????} ??
          19. ????matchArray?=?date.match(datePat); ??
          20. ????if(matchArray?==?null)? ??
          21. ????{ ??
          22. ????????f_alert(obj,"日期長度不對(duì),或日期中有非數(shù)字符號(hào)"); ??
          23. ????????return?false; ??
          24. ????} ??
          25. ????if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2})$/.test(format)) ??
          26. ????{ ??
          27. ????????year?=?matchArray[1]; ??
          28. ????????month?=?matchArray[3]; ??
          29. ????????day?=?matchArray[4]; ??
          30. ????}?else??
          31. ????{ ??
          32. ????????year?=?matchArray[1]; ??
          33. ????????month?=?matchArray[2]; ??
          34. ????????day?=?matchArray[3]; ??
          35. ????} ??
          36. ????if?(month?<?1?||?month?>?12) ??
          37. ????{????????????? ??
          38. ????????f_alert(obj,"月份應(yīng)該為1到12的整數(shù)"); ??
          39. ????????return?false; ??
          40. ????} ??
          41. ????if?(day?<?1?||?day?>?31) ??
          42. ????{ ??
          43. ????????f_alert(obj,"每個(gè)月的天數(shù)應(yīng)該為1到31的整數(shù)"); ??
          44. ????????return?false; ??
          45. ????}????? ??
          46. ????if?((month==4?||?month==6?||?month==9?||?month==11)?&&?day==31) ??
          47. ????{ ??
          48. ????????f_alert(obj,"該月不存在31號(hào)"); ??
          49. ????????return?false; ??
          50. ????}????? ??
          51. ????if?(month==2) ??
          52. ????{ ??
          53. ????????var?isleap=(year?%?4==0?&&?(year?%?100?!=0?||?year?%?400==0)); ??
          54. ????????if?(day>29) ??
          55. ????????{??????????????? ??
          56. ????????????f_alert(obj,"2月最多有29天"); ??
          57. ????????????return?false; ??
          58. ????????} ??
          59. ????????if?((day==29)?&&?(!isleap)) ??
          60. ????????{??????????????? ??
          61. ????????????f_alert(obj,"閏年2月才有29天"); ??
          62. ????????????return?false; ??
          63. ????????} ??
          64. ????} ??
          65. ????return?true; ??
          66. } ??
          67. ???

          /*
          功能:校驗(yàn)的格式為yyyy年MM月dd日HH時(shí)mm分ss秒,yyyy-MM-dd HH:mm:ss,yyyy/MM/dd HH:mm:ss,yyyyMMddHHmmss
          提示信息:未輸入或輸入的時(shí)間格式錯(cuò)誤
          使用:f_check_time(obj)
          返回:bool
          */
          代碼
          1. function?f_check_time(obj) ??
          2. { ??
          3. ????var?time?=?Trim(obj.value); ??
          4. ????var?dtype?=?obj.eos_datatype; ??
          5. ????var?format?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")"));??//日期格式 ??
          6. ????var?datePat,matchArray,year,month,day,hour,minute,second; ??
          7. ??
          8. ????if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2})?(HH:mm:ss)$/.test(format)) ??
          9. ????????datePat?=?/^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2})?(\d{1,2}):(\d{1,2}):(\d{1,2})$/; ??
          10. ????else?if(/^(y{4})(年)(M{1,2})(月)(d{1,2})(日)(HH時(shí)mm分ss秒)$/.test(format)) ??
          11. ????????datePat?=?/^(\d{4})年(\d{1,2})月(\d{1,2})日(\d{1,2})時(shí)(\d{1,2})分(\d{1,2})秒$/; ??
          12. ????else?if(format?==?"yyyyMMddHHmmss") ??
          13. ????????datePat?=?/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/; ??
          14. ????else??
          15. ????{ ??
          16. ????????f_alert(obj,"日期格式不對(duì)"); ??
          17. ????????return?false; ??
          18. ????} ??
          19. ????matchArray?=?time.match(datePat); ??
          20. ????if(matchArray?==?null)? ??
          21. ????{ ??
          22. ????????f_alert(obj,"日期長度不對(duì),或日期中有非數(shù)字符號(hào)"); ??
          23. ????????return?false; ??
          24. ????} ??
          25. ????if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2})?(HH:mm:ss)$/.test(format)) ??
          26. ????{ ??
          27. ????????year?=?matchArray[1]; ??
          28. ????????month?=?matchArray[3]; ??
          29. ????????day?=?matchArray[4]; ??
          30. ????????hour?=?matchArray[5]; ??
          31. ????????minute?=?matchArray[6]; ??
          32. ????????second?=?matchArray[7]; ??
          33. ????}?else??
          34. ????{ ??
          35. ????????year?=?matchArray[1]; ??
          36. ????????month?=?matchArray[2]; ??
          37. ????????day?=?matchArray[3]; ??
          38. ????????hour?=?matchArray[4]; ??
          39. ????????minute?=?matchArray[5]; ??
          40. ????????second?=?matchArray[6]; ??
          41. ????} ??
          42. ????if?(month?<?1?||?month?>?12) ??
          43. ????{????????????? ??
          44. ????????f_alert(obj,"月份應(yīng)該為1到12的整數(shù)"); ??
          45. ????????return?false; ??
          46. ????} ??
          47. ????if?(day?<?1?||?day?>?31) ??
          48. ????{??????????? ??
          49. ????????f_alert(obj,"每個(gè)月的天數(shù)應(yīng)該為1到31的整數(shù)"); ??
          50. ????????return?false; ??
          51. ????}????? ??
          52. ????if?((month==4?||?month==6?||?month==9?||?month==11)?&&?day==31) ??
          53. ????{????????? ??
          54. ????????f_alert(obj,"該月不存在31號(hào)"); ??
          55. ????????return?false; ??
          56. ????}????? ??
          57. ????if?(month==2) ??
          58. ????{ ??
          59. ????????var?isleap=(year?%?4==0?&&?(year?%?100?!=0?||?year?%?400==0)); ??
          60. ????????if?(day>29) ??
          61. ????????{??????????????? ??
          62. ????????????f_alert(obj,"2月最多有29天"); ??
          63. ????????????return?false; ??
          64. ????????} ??
          65. ????????if?((day==29)?&&?(!isleap)) ??
          66. ????????{??????????????? ??
          67. ????????????f_alert(obj,"閏年2月才有29天"); ??
          68. ????????????return?false; ??
          69. ????????} ??
          70. ????} ??
          71. ????if(hour<0?||?hour>23) ??
          72. ????{ ??
          73. ????????f_alert(obj,"小時(shí)應(yīng)該是0到23的整數(shù)"); ??
          74. ????????return?false; ??
          75. ????} ??
          76. ????if(minute<0?||?minute>59) ??
          77. ????{ ??
          78. ????????f_alert(obj,"分應(yīng)該是0到59的整數(shù)"); ??
          79. ????????return?false; ??
          80. ????} ??
          81. ????if(second<0?||?second>59) ??
          82. ????{ ??
          83. ????????f_alert(obj,"秒應(yīng)該是0到59的整數(shù)"); ??
          84. ????????return?false; ??
          85. ????} ??
          86. ????return?true; ??
          87. } ??
          88. ???

          /*判斷當(dāng)前對(duì)象是否可見*/
          代碼
          1. function?isVisible(obj){ ??
          2. ????var?visAtt,disAtt; ??
          3. ????try{ ??
          4. ????????disAtt=obj.style.display; ??
          5. ????????visAtt=obj.style.visibility; ??
          6. ????}catch(e){} ??
          7. ????if(disAtt=="none"?||?visAtt=="hidden") ??
          8. ????????return?false; ??
          9. ????return?true; ??
          10. } ??
          11. ???

          /*判斷當(dāng)前對(duì)象及其父對(duì)象是否可見*/
          代碼
          1. function?checkPrVis(obj){ ??
          2. ????var?pr=obj.parentNode; ??
          3. ????do{ ??
          4. ????????if(pr?==?undefined?||?pr?==?"undefined")?return?true; ??
          5. ????????else{ ??
          6. ????????????if(!isVisible(pr))?return?false; ??
          7. ????????} ??
          8. ????}while(pr=pr.parentNode); ??
          9. ????return?true; ??
          10. } ??
          11. ???

          /* 彈出警告對(duì)話框,用戶點(diǎn)確定后將光標(biāo)置于出錯(cuò)文本框上, 并且將原來輸入內(nèi)容選中。*/
          代碼
          1. function?f_alert(obj,alertInfo) ??
          2. { ??
          3. ????var?caption?=?obj.getAttribute("eos_displayname"); ??
          4. ????if(caption?==?null) ??
          5. ????????caption?=?""; ??
          6. ????alert(caption?+?":"?+?alertInfo?+?"!");? ??
          7. ????obj.select(); ??
          8. ????if(isVisible(obj)?&&?checkPrVis(obj)) ??
          9. ????????obj.focus(); ??
          10. } ??
          11. ???

          /**
          * 檢測字符串是否為空
          */
          代碼
          1. function?isnull(str) ??
          2. { ??
          3. ????var?i; ??
          4. ????if(str.length?==?0) ??
          5. ????????return?true; ??
          6. ????for?(i=0;i<str.length;i++) ??
          7. ????{ ??
          8. ????????if?(str.charAt(i)!='?')? ??
          9. ????????????return?false; ??
          10. ????} ??
          11. ????return?true; ??
          12. } ??
          13. ???

          /**
          * 檢測指定文本框輸入是否合法。
          * 如果用戶輸入的內(nèi)容有錯(cuò),則彈出提示對(duì)話框,
          * 同時(shí)將焦點(diǎn)置于該文本框上,并且該文本框前面
          * 會(huì)出現(xiàn)一個(gè)警告圖標(biāo)(輸入正確后會(huì)自動(dòng)去掉)。
          */
          代碼
          1. function?checkInput(object) ??
          2. { ??
          3. ????var?image; ??
          4. ????var?i; ??
          5. ????var?length; ??
          6. ??
          7. ????if(object.eos_maxsize?+?""?!=?"undefined")?length?=?object.eos_maxsize; ??
          8. ????else?length?=?0; ??
          9. ??
          10. ????if?(object.eos_isnull=="true"?&&?isnull(object.value))??return?true; ??
          11. ??
          12. ????/*?長度校驗(yàn)?*/??
          13. ????if(length?!=?0?&&?strlen(object.value)?>?parseInt(length))?{ ??
          14. ????????????f_alert(object,?"超出最大長度"?+?length); ??
          15. ????????????return?false; ??
          16. ????}? ??
          17. ????/*?數(shù)據(jù)類型校驗(yàn)?*/??
          18. ????else?{ ??
          19. ????????if?(object.eos_datatype?+?""?!=?"undefined") ??
          20. ????????{??????? ??
          21. ??
          22. ????????????var?dtype?=?object.eos_datatype; ??
          23. ????????????var?objName?=?object.name; ??
          24. ????????????//如果類型名后面帶有括號(hào),則視括號(hào)前面的字符串為校驗(yàn)類型 ??
          25. ????????????if(dtype.indexOf("(")?!=?-1) ??
          26. ????????????????dtype?=?dtype.substring(0,dtype.indexOf("(")); ??
          27. ????????????//根據(jù)頁面元素的校驗(yàn)類型進(jìn)行校驗(yàn) ??
          28. ????????????try{ ??
          29. ????????????????if(eval("f_check_"?+?dtype?+?"(object)")?!=?true) ??
          30. ????????????????????return?false; ??
          31. ????????????}catch(e){return?true;} ??
          32. ????????????/*??如果form中存在name前半部分相同,并且同時(shí)存在以"min"和"max"結(jié)尾的表單域, ?
          33. ????????????????那么視為按區(qū)間查詢。即"min"結(jié)尾的表單域的值要小于等于"max"結(jié)尾的表單域的值。?*/??
          34. ????????????if(objName.substring((objName.length-3),objName.length)=="min") ??
          35. ????????????{ ??
          36. ????????????????var?objMaxName?=?objName.substring(0,?(objName.length-3))?+?"max"; ??
          37. ????????????????if(document.getElementById(objMaxName)?!=?undefined?&&?document.getElementById(objMaxName)?!=?"undefined"?) ??
          38. ????????????????{ ??
          39. ????????????????????if(checkIntervalObjs(object,?document.getElementById(objMaxName))?!=?true) ??
          40. ????????????????????????return?false;??????????????????? ??
          41. ????????????????} ??
          42. ????????????}??????????? ??
          43. ????????} ??
          44. ????} ??
          45. ????return?true; ??
          46. } ??
          47. ???

          /* 檢測表單中所有輸入項(xiàng)的正確性,一般用于表單的onsubmit事件 */
          代碼
          1. function?checkForm(myform) ??
          2. { ??
          3. ????var?i; ??
          4. ????for?(i=0;i<myform.elements.length;i++) ??
          5. ????{ ??
          6. ????????/*?非自定義屬性的元素不予理睬?*/????? ??
          7. ????????if?(myform.elements[i].eos_displayname?+?""?==?"undefined")?continue; ??
          8. ????????/*?非空校驗(yàn)?*/??
          9. ????????if?(myform.elements[i].eos_isnull=="false"?&&?isnull(myform.elements[i].value)){ ??
          10. ????????????f_alert(myform.elements[i],"不能為空"); ??
          11. ????????????return?false; ??
          12. ????????}??????? ??
          13. ????????/*?數(shù)據(jù)類型校驗(yàn)?*/??
          14. ????????if?(checkInput(myform.elements[i])==false) ??
          15. ????????????return?false;??????????????? ??
          16. ????} ??
          17. ????return?true; ??
          18. } ??
          19. ???

          /**
          * 校驗(yàn)兩個(gè)表單域數(shù)據(jù)的大小,目前只允許比較日期和數(shù)字。
          * @param obj1 小值表單域
          * @param obj2 大值表單域
          */
          代碼
          1. function?checkIntervalObjs(obj1?,?obj2) ??
          2. {??? ??
          3. ????var?caption1?=?obj1.getAttribute("eos_displayname"); ??
          4. ????var?caption2?=?obj2.getAttribute("eos_displayname"); ??
          5. ????var?val1?=?parseFloat(obj1.value); ??
          6. ????var?val2?=?parseFloat(obj2.value); ??
          7. ????//?非自定義屬性的元素不予理睬 ??
          8. ????if?(obj1.eos_displayname?+?""?==?"undefined"?||?obj2.eos_displayname?+?""?==?"undefined")?{ ??
          9. ????????return?false; ??
          10. ????} ??
          11. ????//?日期類型的比較 ??
          12. ????if(f_check_date(obj1)?==?true?&&?f_check_date(obj2)?==?true){ ??
          13. ????????var?dtype?=?obj1.eos_datatype; ??
          14. ????????var?format?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")"));??//日期格式 ??
          15. ????????val1?=?getDateByFormat(obj1.value,?format); ??
          16. ????????dtype?=?obj2.eos_datatype; ??
          17. ????????format?=?dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")"));??//日期格式 ??
          18. ????????val2?=?getDateByFormat(obj2.value,?format); ??
          19. ????????if(val1?>?val2){ ??
          20. ????????obj2.select(); ??
          21. ????????if(isVisible(obj)?&&?checkPrVis(obj)) ??
          22. ????????????obj2.focus(); ??
          23. ????????alert(caption1?+?"的起始日期不能大于其終止日期!"); ??
          24. ????????return?false; ??
          25. ????????} ??
          26. ????} ??
          27. ????//?數(shù)字類型的比較 ??
          28. ????if((isNaN(val1)?&&?!isnull(val1))?||?(isNaN(val2)?&&?!isnull(val2))){ ??
          29. ????????alert(caption1?+?"的值不全為數(shù)字則不能比較!"); ??
          30. ????????return?false; ??
          31. ????} ??
          32. ????if(val1?>?val2){ ??
          33. ????????obj2.select(); ??
          34. ????????if(isVisible(obj)?&&?checkPrVis(obj)) ??
          35. ????????????obj2.focus(); ??
          36. ????????alert(caption1?+?"的起始值不能大于其終止值!"); ??
          37. ????????return?false; ??
          38. ????} ??
          39. ????return?true; ??
          40. } ??
          41. ???

          /*根據(jù)日期格式,將字符串轉(zhuǎn)換成Date對(duì)象。
          格式:yyyy-年,MM-月,dd-日,HH-時(shí),mm-分,ss-秒。
          (格式必須寫全,例如:yy-M-d,是不允許的,否則返回null;格式與實(shí)際數(shù)據(jù)不符也返回null。)
          默認(rèn)格式:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd。*/

          代碼
          1. function?getDateByFormat(str){ ??
          2. ????var?dateReg,format; ??
          3. ????var?y,M,d,H,m,s,yi,Mi,di,Hi,mi,si; ??
          4. ????if((arguments[1]?+?"")?==?"undefined")?format?=?"yyyy-MM-dd?HH:mm:ss"; ??
          5. ????else?format?=?arguments[1]; ??
          6. ????yi?=?format.indexOf("yyyy"); ??
          7. ????Mi?=?format.indexOf("MM"); ??
          8. ????di?=?format.indexOf("dd"); ??
          9. ????Hi?=?format.indexOf("HH"); ??
          10. ????mi?=?format.indexOf("mm"); ??
          11. ????si?=?format.indexOf("ss"); ??
          12. ????if(yi?==?-1?||?Mi?==?-1?||?di?==?-1)?return?null; ??
          13. ????else{ ??
          14. ????????y?=?parseInt(str.substring(yi,?yi+4)); ??
          15. ????????M?=?parseInt(str.substring(Mi,?Mi+2)); ??
          16. ????????d?=?parseInt(str.substring(di,?di+2)); ??
          17. ????} ??
          18. ????if(isNaN(y)?||?isNaN(M)?||?isNaN(d))?return?null; ??
          19. ????if(Hi?==?-1?||?mi?==?-1?||?si?==?-1)?return?new?Date(y,?M-1,?d); ??
          20. ????else{ ??
          21. ????????H?=?str.substring(Hi,?Hi+4); ??
          22. ????????m?=?str.substring(mi,?mi+2); ??
          23. ????????s?=?str.substring(si,?si+2); ??
          24. ????} ??
          25. ????if(isNaN(parseInt(y))?||?isNaN(parseInt(M))?||?isNaN(parseInt(d)))?return?new?Date(y,?M-1,?d); ??
          26. ????else?return?new?Date(y,?M-1,?d,H,?m,?s); ??
          27. } ??
          28. ???

          /*LTrim(string):去除左邊的空格*/
          代碼
          1. function?LTrim(str){ ??
          2. ????var?whitespace?=?new?String("?\t\n\r"); ??
          3. ????var?s?=?new?String(str);??? ??
          4. ??
          5. ????if?(whitespace.indexOf(s.charAt(0))?!=?-1){ ??
          6. ????????var?j=0,?i?=?s.length; ??
          7. ????????while?(j?<?i?&&?whitespace.indexOf(s.charAt(j))?!=?-1){ ??
          8. ????????????j++; ??
          9. ????????} ??
          10. ????????s?=?s.substring(j,?i); ??
          11. ????} ??
          12. ????return?s; ??
          13. } ??
          14. ???

          /*RTrim(string):去除右邊的空格*/
          代碼
          1. function?RTrim(str){ ??
          2. ????var?whitespace?=?new?String("?\t\n\r"); ??
          3. ????var?s?=?new?String(str); ??
          4. ? ??
          5. ????if?(whitespace.indexOf(s.charAt(s.length-1))?!=?-1){ ??
          6. ????????var?i?=?s.length?-?1; ??
          7. ????????while?(i?>=?0?&&?whitespace.indexOf(s.charAt(i))?!=?-1){ ??
          8. ????????????i--; ??
          9. ????????} ??
          10. ????????s?=?s.substring(0,?i+1); ??
          11. ????} ??
          12. ????return?s; ??
          13. } ??
          14. ???

          /*Trim(string):去除字符串兩邊的空格*/
          代碼
          1. function?Trim(str){ ??
          2. ????return?RTrim(LTrim(str)); ??
          3. }? ??
          4. ???

          posted on 2006-12-27 09:45 junky 閱讀(358) 評(píng)論(0)  編輯  收藏 所屬分類: web

          主站蜘蛛池模板: 汉中市| 阳泉市| 湟中县| 柳林县| 桐城市| 高雄县| 内黄县| 平昌县| 凌云县| 七台河市| 乐平市| 新民市| 东乡县| 泰兴市| 出国| 景东| 岚皋县| 星子县| 甘泉县| 石楼县| 黄石市| 衡水市| 江油市| 祁连县| 如皋市| 西充县| 盐津县| 新河县| 邓州市| 墨脱县| 吉林市| 仙居县| 贡嘎县| 乐至县| 沾益县| 乐业县| 汝南县| 海口市| 萍乡市| 巴里| 进贤县|