Html表單javascript 驗證通用模式(收藏)

Html表單javascript 驗證通用模式


循環主體代碼如下:

/*******************************************
*  作者: 趙年峯
*
格式
null 是否爲空判斷
num 數字
ab 字母
chs 漢字
bit 位數
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;
        }
}

/*************************************************
* 函數用途:自動檢測表單
* 參數:form_name 要提交的form對象名字
*      input_arry 要檢測input控件對象組
*      input_arry參數數組的第一個位置是
*      控件的名字,第二個位置是如果出錯
*      要顯示的錯誤信息字符串,第三個位
*      置是檢測範圍標誌,如果多標誌可以
*      用,分開。例如'num,null'不能空,
*      並且只能爲數字
*/
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函數是檢測是否爲空

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

οnclick=“auto_check_form(test1,
[
 [text_1,'不能空並且只能是數字','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_<=這些都是匹配符。

 

上面只是一個例子程序  此版本已修正BUG  現在是完全版本。

posted on 2004年08月12日 12:54 PM

反饋
本文尚無評論。
Post Comment
Title 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章