javascript驗證

          Posted on 2007-11-18 00:13 yukui 閱讀(189) 評論(0)  編輯  收藏 所屬分類: 技術
          格式
          null 是否為空判斷
          num 數(shù)字
          ab 字母
          chs 漢字
          bit 位數(shù)
          phone 電話格式
          email 電子郵件格式
          http 格式
          */
          function check_null(check_obj){
            var str = '';
            for(i = 0; i < check_obj.length; i++) {
              str = str + ' ';
            }
            return (str == check_obj);
          }

          function check_num(check_obj){
              var i,j,strTemp;
              //abcdefghijklmnopqrstuvwxyz
              strTemp="0123456789";
              if ( check_obj.length== 0)
                  return false;
              for (i=0;i<check_obj.length;i++)
              {
                 j=strTemp.indexOf(check_obj.charAt(i));
                 if (j==-1)
                 {
                   return false;
                 }
              }
              return true;
          }

          function check_ab(check_obj){
           
              var i,j,strTemp;
              
              strTemp="abcdefghijklmnopqrstuvwxyz";
              if ( check_obj.length== 0)
                  return false;
              for (i=0;i<check_obj.length;i++)
              {
                 j=strTemp.indexOf(check_obj.charAt(i));
                 if (j==-1)
                 {
                   return false;
                 }
              }
              return true;
          }

          function check_chs(check_obj){
              if(check_obj.search(/[^\x00-\x80]/)>=0){
               return true;
              }else{
                  return false;
              }
               
          }

          function check_bit(check_obj,bit_obj){
            arry_str = bit_obj.split('_');
            var obj_length = check_obj.length;
            
            switch(arry_str[2]){
             case ">":
                  if(obj_length>arry_str[1]){
                    return true;
                  }
                  break;
             case "<":
                  if(obj_length<arry_str[1]){
                    return true;
                  }
                  break;
             case ">=":
                  if(obj_length>=arry_str[1]){
                    return true;
                  }
                  break;
             case "<=":
                  if(obj_length<=arry_str[1]){
                    return true; 
                  }
                  break;
            }
            return false;
          }

          function check_phone(check_obj){
           
            if(check_obj.search(/[0-9]{4}\-[0-9]*/)>=0){
             return true;
              }else{
                  return false;
              }
            
          }

          function check_email(check_obj){
              
              if(check_obj.search(/^[\w-]+@[\w-]+\.[A-Za-z0-9]{2,}$/)>=0){
                  return true;
                }else{
                  return false;
                }
          }

          function check_http(check_obj){
              if(check_obj.search(/^https?:\/\/((\w|-)+\.)+\w+\/?$/i)>=0){
                  return true;
                  }else{
                  return false;
                  }
          }

          /*************************************************
          * 函數(shù)用途:自動檢測表單
          * 參數(shù):form_name 要提交的form對象名字
          *      input_arry 要檢測input控件對象組
          *      input_arry參數(shù)數(shù)組的第一個位置是
          *      控件的名字,第二個位置是如果出錯
          *      要顯示的錯誤信息字符串,第三個位
          *      置是檢測范圍標志,如果多標志可以
          *      用,分開。例如'num,null'不能空,
          *      并且只能為數(shù)字
          */
          function auto_check_form(form_name,input_arry){
           
           for(var num in input_arry){
               
               alert('ok');
               alert_flag=0;
               arry_str = input_arry[num][2].split(',');
             
               
               for(var es_num in arry_str){
                 
                 switch(arry_str[es_num]){
                   case "null":
                        if(check_null(input_arry[num][0].value)==true){
                          alert_flag=1; 
                        }
                        break;
                   case "num":
                        if(check_num(input_arry[num][0].value)==false){
                          alert_flag=1;
                        }
                        break
                   case "ab":
                        if(check_ab(input_arry[num][0].value)==false){
                          alert_flag=1;
                        }
                        break;
                   case "chs":
                       if(check_chs(input_arry[num][0].value)==false){
                         alert_flag=1;
                       }
                        break;
                   case "phone":
                       if(check_phone(input_arry[num][0].value)==false){
                        alert_flag=1;
                       }
                        break;
                   case "email":
                       if(check_email(input_arry[num][0].value)==false){
                           alert_flag=1;
                       }
                        break;
                   case "http":
                       if(check_http(input_arry[num][0].value)==false){
                        alert_flag=1;
                       }
                        break;
                   default:
                      
                 }
                 if(arry_str[es_num].search(/bit_*/)>=0){
                  if(check_bit(input_arry[num][0].value,arry_str[es_num])==false){
                    alert_flag=1;
                  }
                 }       
               }
               if(alert_flag==1){
                   alert(input_arry[num][1]);
                   return 0;
               }
             
           
           }
           form_name.submit();
             
          }


          注:checkspace函數(shù)是檢測是否為空

          html方調用通過數(shù)組和控件對象名字,對比模式的方式來得到更多的判斷支持,比如第2個參數(shù)中數(shù)組的第3個參數(shù)可以這樣寫:

          onclick=“auto_check_form(test1,
          [
           [text_1,'不能空并且只能是數(shù)字','null,num'],
           [text_2,'不能為空只能為字母','null,ab'],
           [text_3,'不能小于9位','null,num,bit_9_>'],
           [text_4,'電話號碼輸入錯誤','null,phone,bit_13_<='],
           [text_5,'請輸入漢字做名字','null,chs,bit_6_>']
          ]);">“

          null,phone,bit_13_<=這些都是匹配符。

          ¢//校驗是否全由數(shù)字組成
          function isDigit(s)
          {
              var patrn=/^[0-9]{1,20}$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗登錄名:只能輸入5-20個以字母開頭、可帶數(shù)字、“_”、“.”的字串
          function isRegisterUserName(s)
          {
              var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗用戶姓名:只能輸入1-30個以字母開頭的字串
          function isTrueName(s)
          {
              var patrn=/^[a-zA-Z]{1,30}$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗密碼:只能輸入6-20個字母、數(shù)字、下劃線
          function isPasswd(s)
          {
              var patrn=/^(\w){6,20}$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗普通電話、傳真號碼:可以“+”開頭,除數(shù)字外,可含有“-”
          function isTel(s)
          {
              //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;
              var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗手機號碼:必須以數(shù)字開頭,除數(shù)字外,可含有“-”
          function isMobil(s)
          {
              var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗郵政編碼
          function isPostalCode(s)
          {
              //var patrn=/^[a-zA-Z0-9]{3,12}$/;
              var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗搜索關鍵字
          function isSearch(s)
          {
              var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;\'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;\'\,.<>?]{0,19}$/;
              if (!patrn.exec(s)) return false
              return true
          }

          function isIP(s)  //by zergling
          {
              var patrn=/^[0-9.]{1,20}$/;
              if (!patrn.exec(s)) return false
              return true
          }

          ¢//校驗是否全由數(shù)字組成
          function isDigit(s)
          {
              var patrn=/^[0-9]{1,20}$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗登錄名:只能輸入5-20個以字母開頭、可帶數(shù)字、“_”、“.”的字串
          function isRegisterUserName(s)
          {
              var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗用戶姓名:只能輸入1-30個以字母開頭的字串
          function isTrueName(s)
          {
              var patrn=/^[a-zA-Z]{1,30}$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗密碼:只能輸入6-20個字母、數(shù)字、下劃線
          function isPasswd(s)
          {
              var patrn=/^(\w){6,20}$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗普通電話、傳真號碼:可以“+”開頭,除數(shù)字外,可含有“-”
          function isTel(s)
          {
              //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;
              var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗手機號碼:必須以數(shù)字開頭,除數(shù)字外,可含有“-”
          function isMobil(s)
          {
              var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
              if (!patrn.exec(s)) return false
              return true
          }

          //校驗郵政編碼
          function isPostalCode(s)
          {
              //var patrn=/^[a-zA-Z0-9]{3,12}$/;
              var patrn=/^[a-zA-Z0-9 ]{3,12}$/;

          /*********************************************************************************
           * FUNCTION:  isBetween
           * PARAMETERS:  val  AS any value
           *     lo  AS Lower limit to check
           *     hi  AS Higher limit to check
           * CALLS:   NOTHING
           * RETURNS:  TRUE if val is between lo and hi both inclusive, otherwise false.
           **********************************************************************************/
           function isBetween (val, lo, hi) {
            if ((val < lo) || (val > hi)) { return(false); }
            else { return(true); }
           }
           /*********************************************************************************
           * FUNCTION:  isDate checks a valid date
           * PARAMETERS:  theStr  AS String
           * CALLS:   isBetween, isInt
           * RETURNS:  TRUE if theStr is a valid date otherwise false.
           **********************************************************************************/
           function isDate (theStr) {
            var the1st = theStr.indexOf('-');
            var the2nd = theStr.lastIndexOf('-');
            
            if (the1st == the2nd) { return(false); }
            else {
             var y = theStr.substring(0,the1st);
             var m = theStr.substring(the1st+1,the2nd);
             var d = theStr.substring(the2nd+1,theStr.length);
             var maxDays = 31;
             
             if (isInt(m)==false || isInt(d)==false || isInt(y)==false) {
              return(false); }
             else if (y.length < 4) { return(false); }
             else if (!isBetween (m, 1, 12)) { return(false); }
             else if (m==4 || m==6 || m==9 || m==11) maxDays = 30;
             else if (m==2) {
              if (y % 4 > 0) maxDays = 28;
              else if (y % 100 == 0 && y % 400 > 0) maxDays = 28;
             else maxDays = 29;
             }
             if (isBetween(d, 1, maxDays) == false) { return(false); }
             else { return(true); }
            }
           }
           /********************************************************************************
           *   FUNCTION:       Compare Date! Which is the latest!
           *   PARAMETERS:     lessDate,moreDate AS String
           *   CALLS:          isDate,isBetween
           *   RETURNS:        TRUE if lessDate<moreDate
           *********************************************************************************/
           function isComdate (lessDate , moreDate)
           {
            if (!isDate(lessDate)) { return(false);}
            if (!isDate(moreDate)) { return(false);}
            var less1st = lessDate.indexOf('-');
            var less2nd = lessDate.lastIndexOf('-');
            var more1st = moreDate.indexOf('-');
            var more2nd = moreDate.lastIndexOf('-');
            var lessy = lessDate.substring(0,less1st);
            var lessm = lessDate.substring(less1st+1,less2nd);
            var lessd = lessDate.substring(less2nd+1,lessDate.length);
            var morey = moreDate.substring(0,more1st);
            var morem = moreDate.substring(more1st+1,more2nd);
            var mored = moreDate.substring(more2nd+1,moreDate.length);
            var Date1 = new Date(lessy,lessm,lessd); 
            var Date2 = new Date(morey,morem,mored); 
            if (Date1>Date2) { return(false);}
             return(true); 
             
           }

           /*********************************************************************************
           * FUNCTION isEmpty checks if the parameter is empty  or null
           * PARAMETER str  AS String
           **********************************************************************************/
           function isEmpty (str) {
               if ((str==null)||(str.length==0)) return true;
               else return(false);
           }


           /*********************************************************************************
           * FUNCTION isAllEmpty checks if all the character is empty  or null
           * PARAMETER str  AS String
           **********************************************************************************/
           function isAllEmpty (str)
            {
            if ((str==null)||(str.length==0)) return true;
            else
             {
             for (var i=0; i<str.length; i++)
              {
              if (str.substring(i,i+1)!=" ") return false;
              }
             return true
             }
            }

           /*********************************************************************************
           * FUNCTION:  isInt
           * PARAMETER:  theStr AS String 
           * RETURNS:  TRUE if the passed parameter is an integer, otherwise FALSE
           * CALLS:   isDigit
           **********************************************************************************/
           function isInt (theStr) {
            var flag = true;

            if (isEmpty(theStr)) { flag=false; }
            else
            { for (var i=0; i<theStr.length; i++) {
              if (isDigit(theStr.substring(i,i+1)) == false) {
               flag = false; break;
              }
             }
            }
            return(flag);
           }

           /*********************************************************************************
           * FUNCTION:  isReal
           * PARAMETER: heStr AS String 
                    decLen AS Integer (how many digits after period)
           * RETURNS:  TRUE if theStr is a float, otherwise FALSE
           * CALLS:   isInt
           **********************************************************************************/
           function isReal (theStr, decLen) {
            var dot1st = theStr.indexOf('.');
            var dot2nd = theStr.lastIndexOf('.');
            var OK = true;
            if (isEmpty(theStr)) return false;

            if (dot1st == -1) {
             if (!isInt(theStr)) return(false);
             else return(true);
            }
            else if (dot1st != dot2nd) return (false);
            else if (dot1st==0) return (false);
            else {
             var intPart = theStr.substring(0, dot1st);
             var decPart = theStr.substring(dot2nd+1);

             if (decPart.length > decLen) return(false);
             else if (!isInt(intPart) || !isInt(decPart)) return (false);
             else if (isEmpty(decPart)) return (false);
             else return(true);
            }
           }

           /*********************************************************************************
           * FUNCTION:  isEmail
           * PARAMETER:  String (Email Address)
           * RETURNS:  TRUE if the String is a valid Email address
           *     FALSE if the passed string is not a valid Email Address
           * EMAIL FORMAT: AnyName@EmailServer e.g; webmaster@hotmail.com
           *     @ sign can appear only once in the email address.
           *********************************************************************************/
           function isEmail (theStr) {
            var atIndex = theStr.indexOf('@');
            var dotIndex = theStr.indexOf('.', atIndex);
            var flag = true;
            theSub = theStr.substring(0, dotIndex+1)

            if ((atIndex < 1)||(atIndex != theStr.lastIndexOf('@'))||(dotIndex < atIndex + 2)||(theStr.length <= theSub.length)) 
            { return(false); }
            else { return(true); }
           }
           /*********************************************************************************
           * FUNCTION:  newWindow
           * PARAMETERS:  doc   -> Document to open in the new window
                hite  -> Height of the new window
                wide  -> Width of the new window
                bars -> 1-Scroll bars = YES 0-Scroll Bars = NO
                resize  -> 1-Resizable = YES 0-Resizable = NO
           * CALLS:   NONE
           * RETURNS:  New window instance
           **********************************************************************************/
           function newWindow (doc, wide, hite, bars, resize) {
            var opt="toolbar=0,location=0,directories=0,status=0,menubar=0,";
            var l = Math.floor((screen.width-wide)/2);
            var t = Math.floor((screen.height-hite)/2);
            opt+=("scrollbars="+bars+",");
            opt+=("resizable="+resize+",");
            opt+=("width="+wide+",");
            opt+=("height="+hite+",");
            opt+=("top="+t+",");
            opt+=("left="+l);
            winHandle=window.open(doc,'',opt);
            return;
           }

           //校驗數(shù)字:0-9數(shù)字的組合
           function isDigit(s)
           {
            var patrn=/^[0-9]{1,20}$/;
            if (!patrn.exec(s)) return false
            return true
           }

          posts - 131, comments - 12, trackbacks - 0, articles - 32

          Copyright © yukui

          主站蜘蛛池模板: 清水县| 军事| 额尔古纳市| 福州市| 兴宁市| 平武县| 屏东县| 钟祥市| 荥阳市| 南昌市| 上虞市| 文成县| 繁昌县| 宿迁市| 阿鲁科尔沁旗| 运城市| 高陵县| 上饶市| 维西| 湘阴县| 江华| 淄博市| 钟山县| 屏东市| 石家庄市| 桂东县| 夹江县| 昆明市| 浪卡子县| 香港 | 顺昌县| 临清市| 黄陵县| 宝坻区| 孙吴县| 孟州市| 渝中区| 大邑县| 新郑市| 襄垣县| 蒙自县|