表单检验解决办法v1

var err1 = "不能为空.";
var err2 = "有非法字符.";
var check_idArray = new Array();//保存一系列验证数据
/**
//############################
//User:先用数组check_idArray赋值,再调用onClick='idArray()'
//Create Date:06-9-24
//Athor: Ray/kawaycheng
//
//############################

//0  id
//1  文本长度 为 0 时,不受控制
//2  出错信息
//3  检验模式 ->
//        1:空值(包括不可见字符),

        2:空值(包括不可见字符)及危险字符,
        
        3:邮件格式,
        
        4:国内固话格式,
        
        5:移动电话格式
        
        6:仅数字
        
//    方便扩展通过改checkThisValue( )
例子
check_idArray[0] = new Array("user" , 50 , "请填上格式合法的用户名." , 2 );
check_idArray[1] = new Array("pass" , 50 , "请填上格式合法的密码." , 2 );
check_idArray[2] = new Array("chk" , 6 , "请填上格式合法的验证码." , 6 );

**/
function check(str)
{
    var x = true;
    var strArray = new Array( "[" , "]","{","}",";","&","<",">" );
    for( i in strArray )
    {
        if ( str.indexOf( strArray[ i ] ) > -1 )
        {
            x = false;
            break;
        }

    }
    return x;
}

function CheckNull( id , txtlen  , info )
{
//id

//txtlen 限制文本长度

//info 出错信息

 var tmp = document.getElementById(id);
 var reg = //s/g;
 
 if ( txtlen > 0 && tmp.value.length > txtlen )
 {
  alert( info );
  document.getElementById( id ).style.borderwidth = 1;
  document.getElementById( id ).style.borderColor = '#EFEFEF';
  document.getElementById( id ).value = tmp.value;
  document.getElementById( id ).focus();
  return false;
 }
 tmp.value = tmp.value.replace( reg , "" );
 if ( tmp.value == "" )
 {
  alert( info );
  document.getElementById( id ).style.borderwidth = 1;
  document.getElementById( id ).style.borderColor = '#EFEFEF';
  document.getElementById( id ).value = tmp.value;
  document.getElementById( id ).focus();
  return false;
 }
 else
 {
  if ( txtlen > 0 )
  {
   if ( tmp.value.length > txtlen )
   {
    alert( info );
    document.getElementById( id ).style.borderwidth = 1;
    document.getElementById( id ).style.borderColor = '#EFEFEF';
    document.getElementById( id ).value = tmp.value;
    document.getElementById( id ).focus();
    return false;
   }
   else
   {
    document.getElementById( id ).style.borderwidth = 1;
    document.getElementById( id ).style.borderColor = '';
   }
  }
  document.getElementById( id ).style.borderwidth = 1;
  document.getElementById( id ).style.borderColor = '';
  return true;
 }
}

function regExpSub( id , pattern )
{
    return pattern.test( document.getElementById( id ).value );        
}


function checkThisValue( id , len , info , type )
{
    var regExp = new Array()
    regExp[ 0 ] = /^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$/; //邮件
    regExp[ 1 ] = /^((/(/d{3}/))|(/d{3}/-))?(/(0/d{2,3}/)|0/d{2,3}-)?[1-9]/d{6,7}$/; //固话
    regExp[ 2 ] = /^((/(/d{3}/))|(/d{3}/-))?13/d{9}$/; //移动电话
    regExp[ 3 ] = /^/d+$/;//数字
    regExp[ 4 ] = /^[/u0391-/uFFE5]+$/; //中文
    regExp[ 5 ] = /^[A-Za-z]+$/;//英文
    regExp[ 6 ] = /^(([A-Z]*|[a-z]*|/d*|[-_/~!@#/$%/^&/*/./(/)/[/]/{/}<>/?/'/"]*)|.{0,5})$|/s/;//不安全字符
    switch( type )
    {
        case 1 :
            if ( CheckNull( id , len , info ) )
            {
            
            }
            else
            {
                return false;
            }
        break;
        
        case 2 :
            if ( CheckNull( id , len , info ) )
            {
                if ( check( document.getElementById(id).value ) )
                {
                    return true;
                }
                else
                {
                    alert( info );
                    document.getElementById(id).focus();
                    return false;
                }
            }
            else
            {
                return false;
            }
        break;
        
        case 3 :
            if ( ! CheckNull( id , len , info ) )
            {
                return false;
            }        
            if ( ! regExpSub( id , regExp[ 0 ] ) )
            {
                alert( info );
                document.getElementById(id).focus();
                return false;
            }
        break;
        
        case 4 :
            if ( ! CheckNull( id , len , info ) )
            {
                return false;
            }        
            if (  ! regExpSub( id , regExp[ 1 ] ) )
            {
                alert( info );
                document.getElementById(id).focus();
                return false;
            }
        break;
        
        case 5 :
            if ( ! CheckNull( id , len , info ) )
            {
                return false;
            }        
            if (  ! regExpSub( id , regExp[ 2 ] ) )
            {
                alert( info );
                document.getElementById(id).focus();
                return false;
            }
        break;
        
        case 6 :
            if ( ! CheckNull( id , len , info ) )
            {
                return false;
            }        
            if ( ! regExpSub( id , regExp[ 3 ] ) )
            {
                alert( info );
                document.getElementById(id).focus();
                return false;
            }
        break;
        
    }
    return true;
}

function idArray()
{
    var x = true;
    for ( var i in check_idArray )
    {
        if ( ! checkThisValue( check_idArray[ i ][ 0 ],check_idArray[ i ][ 1 ],check_idArray[ i ][ 2 ],check_idArray[ i ][ 3 ] ) )
        {
            x = false;
            break;
        }
    }
    return x;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值