表单检验解决办法v1

原创 2006年06月08日 21:04:00
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;
}

相关文章推荐

表单input中disabled提交后得不到值的解决办法

表单input中disabled提交后得不到值的解决办法

LayUI表单获取不到data的解决办法

前几天用LayUI表单进行AJAX提交的时候发现,function(data)里的data始终无法获取表单里填的值,当时我认为是出BUG了就用了$('#updateform').serialize()...

JSP学习笔记:用multipart/form-data提交表单get非文件字段获取的解决办法

最近在解决Servlet文件上传方面遇到了一个问题,就是通过multipart/form-data这个表单类型提交要上传的文件的时候,所跳到的Servlet或者JSP页面无法用request.getP...

关于button会提交表单的原因及解决办法

今天在写一个小例子时无意间发现button标签会提交表单, 很是不解. 后来换成input type="button"就没有这个问题, 于是上网查了下,结合各位网友和w3c的说法, 总结如下: 未设...

上传文件form表单enctype="multipart/form-data"传值解决办法(代原代码)

最近做的一个项目里遇到一个问题,就是如何在上传文件的表单里传递其它的变量,因为一但form表单用了enctype="multipart/form-data"类型后,所有的值都是以二进制进行传递的,所以...
  • asdfzjs
  • asdfzjs
  • 2013年12月14日 20:47
  • 766

Infopath 2013向Sharepoint 2013发布表单时提示"下列URL无效"的解决办法

问题界面如下: 我的环境是这样的,2台服务器(均为VM虚拟机),一台域控s30.abc.com,另一台s31.abc.com安装了Sharepoint Server 2013和Office2013 ...
  • lvbenfu
  • lvbenfu
  • 2014年01月30日 06:54
  • 1035

关于ThinkPHP下表单令牌错误的相关解决办法

今天在用ThinkPHP做程序的时候,以前用create创建数据的时候,出现了错误提示“表单令牌错误”,然后各种百度各种谷歌,得到的网上解答给出了以下的建议 1、清缓存: 用了,我把所有的Cache...

Struts2 自定义拦截器栈后无法得到表单参数之解决办法

我自定义了一个拦截器,目的是在action执行之前像ValueStack中设置一些属性,代码是这样的: view plaincopy to clipboardprint? ...

iOS开发中Xcode编译错误 linker command failed with exit code 1 (use -v to see invocation) 的解决办法

clang: error: linker command failed with exit code 1 (use -v to see invocation) 的Xcode错误调试,在iOS开发中算是...
  • Aaidong
  • Aaidong
  • 2015年05月15日 08:54
  • 6286
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:表单检验解决办法v1
举报原因:
原因补充:

(最多只允许输入30个字)