免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 26137 | 回复: 1

通用控件校验函数 [复制链接]

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
发表于 2008-05-17 16:11 |显示全部楼层

//通过控件名字得到object
function MM_findObj_(n, d)
{
    var
p,i,x;  
    if(!
d)
        
d=document;
    if((
p=n.indexOf("?"))>0&&parent.frames.length)
    {
        
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
    }
    if( !(
x=d[n]) && d.all )
        
x=d.all[n];
    for (
i=0;!x&&i//创建
正则表达式
校验邮件地址对象
      
      var checkInteger = /^[+-]?d+$/;  //创建正则表达式校验整数对象
      
var checkFloat = /^[+-]?d+(.d+)?$/;  //创建正则表达式校验浮点数对象
   
for (i=0; i=0 || controlAttribute=='Y' )
            
val = MM_findObj_( putInfo1+"year" );
        else
            
val = MM_findObj_( putInfo1 );
        
//如果控件不存在,直接跳过
        
if( !val )
            continue;
        
myValue1 = val.value;
        
        
//对非空的处理   
        
if( controlAttribute.indexOf('R') >= 0 )
        {            
            if(
controlAttribute.indexOf('D8')>=0 )
            {
               
val = MM_findObj_( putInfo1+'year' );
               
myValue1 = MM_findObj_( putInfo1+'year' ).value;
               
myValue2 = MM_findObj_( putInfo1+'monthfrom' ).value;
               
myValue3 = MM_findObj_( putInfo1+'monthto' ).value;
                if(
myValue1 == '' || myValue2 == '' || myValue3 == '' )
                {
                    
errors = putInfo2+'不能为空';
                    break;
                }               
            }
            else if(
controlAttribute.indexOf('D')>=0 )
            {
               
val = MM_findObj_( putInfo1+'year' );
               
myValue1 = MM_findObj_( putInfo1+'year' ).value;
               
myValue2 = MM_findObj_( putInfo1+'month' ).value;
               
val1 = MM_findObj_( putInfo1+'day' );
                if(
val1 )
                    
myValue3 = MM_findObj_( putInfo1+'day' ).value;
                else
                    
myValue3 = MM_findObj_( putInfo1+'date' ).value;
                    
                if(
myValue1 == '' || myValue2 == '' || myValue3 == '' )
                {
                    
errors = putInfo2+'不能为空';
                    break;
                }               
            }
            else if(
controlAttribute.indexOf('S')>=0 )
            {
               
val = MM_findObj_( putInfo1 );
               
myValue1 = MM_findObj_( putInfo1 ).value;
                if(
myValue1 == '#' )
                {
                    
errors = '请选择'+putInfo2;
                    break;
                }
            }
            else
            {
               
val = MM_findObj_( putInfo1 );
               
myValue1 = MM_findObj_( putInfo1 ).value;
                if(
myValue1 == '' )
                {
                    
errors = putInfo2+'不能为空';
                    break;
                }
            }
        }     
         
//对有效期的处理
         
if( controlAttribute=='Y' )
         {
            
val = MM_findObj_( putInfo1+'year' );
            
val1 = MM_findObj_( putInfo1+'day' );
             if(
val1 )
             {
                 
myValue1 = new Date (MM_findObj_( putInfo1+"year" ).value , MM_findObj_( putInfo1+"month" ).value , MM_findObj_( putInfo1+"day" ).value);
                 
myValue2 = new Date (MM_findObj_( putInfo2+"year" ).value , MM_findObj_( putInfo2+"month" ).value , MM_findObj_( putInfo2+"day" ).value);
             }
             else
             {
                 
myValue1 = new Date (MM_findObj_( putInfo1+"year" ).value , MM_findObj_( putInfo1+"month" ).value , MM_findObj_( putInfo1+"date" ).value);
                 
myValue2 = new Date (MM_findObj_( putInfo2+"year" ).value , MM_findObj_( putInfo2+"month" ).value , MM_findObj_( putInfo2+"date" ).value);
             }
                if(
myValue1 > myValue2 )
            {
               
errors = '有效期结束时间不能大于开始时间';   
                break;   
            }
         }
         
         
//对
其他
属性的处理
         if( myValue1 != '' )
         {     
            
             if (
controlAttribute.indexOf( 'I' ) >= 0 )
             {
                 if( !
checkInteger.test(myValue1) )
                {
                    
errors = putInfo2+'只能是整数';
                    break;
                }   
             }
             else if(  
controlAttribute.indexOf('F') >= 0 )
            {
                if( !
checkFloat.test(myValue1) )
                {
                    
errors = putInfo2+'只能是实数';
                    break;
                }
            }            
            else if(
controlAttribute.indexOf('D8') >= 0 )
            {
               
myValue4 = new Date ( myValue1 , MM_findObj_( putInfo1+'monthfrom' ).value ,'01');
               
myValue5 = new Date ( myValue1 , MM_findObj_( putInfo1+'monthto' ).value ,'01');
                if(
myValue1.length !=4 || !checkDateTime( myValue1 +'-'+MM_findObj_( putInfo1+'monthfrom' ).value+'-'+'01' ) || !checkDateTime( myValue1 +'-'+MM_findObj_( putInfo1+'monthto' ).value+'-'+'01' ))
                {
                    
errors = putInfo2+'时间不正确';
                    break;
                }
                else if(
myValue4 > myValue5 )
                {
                    
errors = putInfo2+'结束时间大于开始时间';
                    break;   
                }
                else if (
myValue12100 )
                {
                    
errors = putInfo2+'不能小于1900年,大于2100年';
                    break;
                }                        
            }
                else if(
controlAttribute.indexOf('D')>=0 )
            {
               
val1 =  MM_findObj_( putInfo1+'day' );
               
myValue4 = '';
                if(
val1 )
                    
myValue4 = MM_findObj_( putInfo1+'day' ).value;
                else
                    
myValue4 = MM_findObj_( putInfo1+'date' ).value;
               
                if(
myValue1.length!=4 || !checkDateTime( myValue1+'-'+MM_findObj_( putInfo1+'month' ).value+'-'+myValue4 ) )
                {
                    
errors = putInfo2+'时间不正确';
                    break;
                }
                else if (
myValue12100 )
                {
                    
errors = putInfo2+'不能小于1900年,大于2100年';
                    break;
                }
            }  
            else if(
controlAttribute.indexOf('E')>=0 )
            {                    
                if ( !
checkMailAddress.test(myValue1) )
                {                           
                    
errors = putInfo2+'不是邮件地址';
                    break;                           
                }
            }
            else if(
controlAttribute.indexOf('N')>=0  )
            {
                if ( !
checkInteger.test(myValue1) )
                {
                    
errors = putInfo2+'不正确';
                    break;
                }
                else if (
myValue12100 )
                {
                    
errors = putInfo2+'不能小于1900年,大于2100年';
                    break;
                }               
            }
        }
      
        
//长度判断
        
if( controlAttribute.indexOf('L|') >= 0 && controlAttribute.indexOf('L|')  myValue5 )
            {                           
               
errors = putInfo2+'长度不正确';
                break;                           
            }
        }
    }   
      if (
errors != '' )
      {
         
alert(errors);
         
val.focus();
      }      
      
document.returnValue = (errors == '');
}
function
checkDateTime( str )
{
    var
reg = /^(d{1,4})-(d{1,2})-(d{1,2})$/; //创建正则表达式校验时间对象
   
var r = str.match(reg);
   
    if(
r==null)
        return
false;
    else
    {
        var
d= new Date(r[1], --r[2],r[3]);         
        if(
d.getFullYear()!=r[1])
            return
false;
        if(
d.getMonth()!=r[2])
            return
false;
        if(
d.getDate()!=r[3])
            return
false;
    }
    return
true;
}

这个的用法是这样的,举例
PHP
代码
:



对于每一个控件是这样定义的
需要三个参数
1.校验类型
2.控件name
3.中文含义


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4206/showart_691819.html

论坛徽章:
0
发表于 2014-07-14 14:05
不错的控件知识,感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP