常规javascript前台验证

/*  描述: 验证日期 格式####-##  */
function  isDateNY(str)
{
    
var  d  =   new  Date();
    
var  y  =  d.getFullYear();
    
var  m  =  d.getMonth()  +   1 ;
    m 
=  ( " 00 "   +  m).substr((m  +   "" ).length);
    
var  a  =  str.match( /^ (d{ 4 })( -| / )(d{ 2 })$ / );
    
    
if  (( ! a) || (parseInt(str.substr( 5 , 2 ), 10 ) > 12 ) || (parseInt(str.substr( 5 , 2 ), 10 ) < 1 ))
    {
        
return   false ;
    }
    
return   true ;
}
/*  描述: 验证是否是浮点数  */
function  isDecimal(str) {
    
if ( !/^ d + .d * $ / .test(str)){
        
return   false ;
    }
    
return   true ;
}
/*  描述: 验证是否为年份  */
function  isYear(strYear){
    
var  iYear    = parseInt(strYear, 10 );
    
if  (iYear < 1900   ||  iYear > 9000 )
       
return   false ;
    
return   true ;
}

/*  描述: 验证是否为月份  */
function  isMonth(strMon){
    
var  iMon    = parseInt(strMon, 10 );
    
if (iMon < 0   ||  iMon > 12 )
       
return   false ;
    
return   true ;
}
/*  描述:是否是整数  */
function  isNumber(str) {
    
for ( var  i = 0 ;i < str.length;i ++ )
        
if (str.charCodeAt(i) < 0x0030   ||  str.charCodeAt(i) > 0x0039 return   false ;
    
return   true ;
}

/*  描述: 验证是否为日  */
function  isDay(strDay){
    
var  iDay    = parseInt(strDay, 10 );
    
if (iDay < 0   ||  iDay > 31 )
       
return   false ;
    
return   true ;
}


/*  描述: 验证是否为normal类型 */
function  _isnormal(str) {
    
if  ( / [ ^ ws一 - - ()] / i.test(str)){
            
return   false ;
        }
    
return   true ;
}


/*  描述: 验证是否为integer类型  */
function  _isinteger(str) {
    
return   /^ d + $ / .test(str)

}

/*  描述: 验证是否为decimal类型  */
function  _isdecimal(str){
    
if  ( / [ ^ d.] / i.test(str)){
            
return   false ;
        }
    
return   true ;
}

/*  描述: 验证是否为extend类型  */
function  _isextend(str) {
    
if  ( / [ ^ ws - ( - )] / i.test(str)){
            
return   false ;
        }
    
return   true ;
}

/*  描述: 验证是否为date类型  */
function  _isdatetime(str){
        
if ( / [ ^ d - ] / i.test(str)) {
            
return   false ;
        }
    
return   true ;
}

/*  描述: 验证是否为mail类型  */
function  _ismail(str){
        
if ( / [ ^ w一 - - .@] / i.test(str)) {
            
return   false ;
        }
    
return   true ;
}

/*  描述: 检查对象的输入长度  */
function  checkLength(obj,length){
    
var  tempValue = obj.value;
    
if  (obj.value.Tlength() > length){
        createInfoPop(
" 输入长度不能大于 " + length,obj, 200 , 50 );
        obj.value
= obj.value.substr( 0 ,length);
        
if  (tempValue == obj.value){
            obj.value
= "" ;
        }
    }
}

/*  描述: 输入字符的控制   */
function  changeValue(obj,type){

    
switch (type){
        
// 包含数字、字母、汉字、下载线、中划线、()
         case   " normal " :
            
if  ( ! _isnormal(obj.value)){
                createInfoPop(
" 只能包含数字、字母、汉字、下划线、中划线、空格、() " ,obj, 200 , 50 );
                obj.value
= obj.value.replace( / [ ^ ws一 - - ()] / g, "" );
            }
            
break ;
        
// 整数
         case   " integer " :
            
if  (obj.value == "" break ;
            
if  ( ! _isinteger(obj.value)){
                createInfoPop(
" 只能包含数字 " ,obj, 200 , 50 );
                obj.value
= obj.value.replace( / D / g, "" );
            }
            
break ;

        
// 浮点数
         case   " decimal " :
            
if  ( ! _isdecimal(obj.value)){
                createInfoPop(
" 只能包含数字、小数点 " ,obj, 200 , 50 );
                obj.value
= obj.value.replace( / [ ^ d.] / , "" );
            }
            
break ;
        
// 包含数字、字母、下载线、中划线、()
         case   " extend " :
            
if  ( ! _isextend(obj.value)){
                createInfoPop(
" 只能包含数字、字母、下划线、中划线、() " ,obj, 200 , 50 );
                obj.value
= obj.value.replace( / [ ^ ws - ()] / g, "" );
            }
            
break ;

        
// 包含数字、中划线
         case   " date " :
            
if  ( ! _isdatetime(obj.value)){
                createInfoPop(
" 只能包含数字、中划线 " ,obj, 200 , 50 );
                obj.value
= obj.value.replace( / [ ^ d - ] / g, "" );
            }
            
break ;
        
// 包含数字、汉字、下划线、中划线、·、@
         case   " email " :
            
if  ( ! _ismail(obj.value)){
                createInfoPop(
" 只能包含数字、字母、汉字、下划线、中划线、.、@ " ,obj, 200 , 50 );
                obj.value
= obj.value.replace( / [ ^ w一 - - @.] / g, "" );
            }
            
break ;
    }
}

/*  描述: 失去焦点后,检查输入是否正确  */
function  blurValue(obj,type,length,prec){
    
if  ( ! prec) prec = 2 ; //  默认精度为2
     if  (obj.value == "" return   false ;
    
switch (type){
        
case   " decimal " :
            
if  (obj.value.indexOf( " . " ) ==- 1 ){
                
if  ( _isinteger(obj.value)){
                    
if  (obj.value.length > (length - prec)){
                        createInfoPop(
" 整数部分长度不能大于 " + (length - prec) + " " ,obj, 200 , 50 );
                        obj.value
= "" ;
                        
break ;
                    }
else {
                        obj.value
+= " . " + repeatStr( " 0 " ,prec);
                    }
                }
            }
            
else {
                
if  (obj.value.substr( 0 ,obj.value.indexOf( " . " )).length > (length - prec)){
                    createInfoPop(
" 整数部分长度不能大于 " + (length - prec) + " " ,obj, 200 , 50 );
                    obj.value
= "" ;
                    
break ;
                }
                
if  (obj.value.substr(obj.value.indexOf( " . " ) + 1 ).length < prec){
                    obj.value
+= repeatStr( " 0 " ,prec - obj.value.substr(obj.value.indexOf( " . " ) + 1 ).length);
                }
            }
            
if  ( ! isDecimal(obj.value)){
                createInfoPop(obj.value
+ " 不是浮点数 " ,obj, 200 , 50 );
                obj.value
= "" ;
                
break ;
            }
            checkLength(obj,length
+ 1 );
            
if  (obj.value.substr(obj.value.indexOf( " . " )).Tlength() > (prec + 1 )){
                createInfoPop(
" 精度不能大于 " + prec,obj, 200 , 50 );
                obj.value
= obj.value.substr( 0 ,obj.value.indexOf( " . " ) + prec + 1 );
            }
            
// 格式化数字的格式
            formatDecimal(obj);
            
break ;
        
case   " integer " :
            
if  (isNumber(obj.value)){
                
if  (obj.value.length > length){
                    createInfoPop(
" 长度不能大于 " + length,obj, 200 , 50 );
                    obj.value
= "" ;
                }
            }
else {
                createInfoPop(obj.value
+ " 不是整数 " ,obj, 200 , 50 );
                obj.value
= "" ;
            }
            
break ;
        
case   " date " :
            
if  ( ! isDate(obj.value)){
            createInfoPop(obj.value
+ " 不是日期格式<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;格式:(####-##-##) " ,obj, 200 , 50 );
                obj.value
= "" ;
            }
            
break ;
        
case   " email " :
            
if  ( ! isEmail(obj.value)){
                createInfoPop(
" email 格式不正确 " ,obj, 200 , 50 );
                obj.value
= "" ;
                
break ;
            }
            checkLength(obj,length);
            
break ;
        
case   " cbo " :
        
// -----------------------------------------------------------------------------
         //  说明:当类型为cbo时,length属性改为cboName
         // -----------------------------------------------------------------------------
             var  cboObj;
            
var  sValue;
            cboObj 
=  document.all.item(length);
            sValue
= "" ;
            
            
if  (obj.value.Tlength() <= 0 ){
                
break ;
            }
            
for ( var  i = 0 ;i < cboObj.options.length;i ++ )
            {
                
if (obj.value  ==  cboObj.options[i].value)
                {
                    sValue 
=  obj.value  +   " - "   +  cboObj.options[i].text;
                    
break ;
                }
                
else   if (obj.value  ==  cboObj.options[i].text)
                {
                    sValue 
=  cboObj.options[i].value  +   " - "   +  obj.value;
                    
break ;
                }
                
else   if (obj.value  ==  (cboObj.options[i].value  +   " - "   +  cboObj.options[i].text))
                {
                    sValue
= cboObj.options[i].value  +   " - "   +  cboObj.options[i].text;
                    
break ;
                }
            }
            obj.value
= sValue;

            
break ;
        
// -----------------------------------------------------------------------------
         //  简短日期格式
         case   " date_NY " :
        
            
if (obj.value.substr( 0 ).length  <   4 )
                {
                    obj.value 
=   "" ;
                    
break ;
                }
                
if (obj.value.substr( 0 ).length  ==   4 )
                {
                    obj.value 
+=   " -01 " ;
                    
break ;
                }
                
if (obj.value.indexOf( " - " !=   " -1 " )
                {
                    
if (obj.value.substr( 0 ,obj.value.indexOf( " - " )).length < 4 )
                    {
                        obj.value
= "" ;
                        
break ;
                    }
                    
if  (obj.value.substr(obj.value.indexOf( " - " +   1 ).length < 2 )
                    {
                        
if (obj.value.substr(obj.value.indexOf( " - " +   1 ==   "" )
                        { 
                            obj.value 
=  obj.value.substring( 0 ,obj.value.indexOf( " - " ))  +   " -01 " ;
                            
break ;
                        }
                        
if (eval(obj.value.substr(obj.value.indexOf( " - " ) + 1 ))  <   1 )
                        {
                            obj.value
= obj.value.substring( 0 ,obj.value.indexOf( " - " ))  +   " -01 " ;
                        }
                        
else
                        {
                            obj.value 
=  obj.value.substring( 0 ,obj.value.indexOf( " - " ))  +   " -0 "   +  obj.value.substr(obj.value.indexOf( " - " +   1 );
                        }
                    } 
                }
                
                
if (isDateNY(obj.value)  ==   false )
                {
                    createInfoPop(
" 日期必须符合日期格式! " ,obj, 250 , 28 );
                    obj.value 
=   "" ;
                    obj.focus();
                }
                
                
break ;
            
        
case   " nullmode " :
            checkLength(obj,length);
            
break ;
    }
}

/*  描述:格式化浮点数  */
function  formatDecimal(obj){
    
var  precStr = "" ;
    
var  reg_exp;
    reg_exp
= new  RegExp( " ^0+([1-9].+|0..+) " , " g " );
    obj.value
= obj.value.replace(reg_exp, " $1 " );
    
    precStr
= obj.value.substr(obj.value.indexOf(&apos;.&apos;));
    
if  (obj.value.length > 0 ){
    
var  num  =  parseInt(obj.value, 10 );    
    
if (num  >=   1000 )
    {
            
var  number_string  =  Math.abs(num).toString();
            
var  insert_position;
            
            
switch (number_string.length  %   3 )
            {
                
case   1 :insert_position  =   1 ;
                
break ;
                
case   2 :insert_position  =   2 ;
                
break ;
                
case   0 :insert_position  =   3 ;
                
break ;
            }        
            
while (insert_position  <  number_string.length)
            {
                number_string 
=  number_string.left(insert_position)  +   " , "   +  number_string.substring(insert_position);
                insert_position 
+=   4 ;
            }    
                obj.value 
=  number_string + precStr;

    }
    }
}
/*  描述: 恢复浮点数显示  */
function  restoreFormat(obj){
    
var  reg_exp  =   new  RegExp( " , " , " g " );
    obj.value 
=  obj.value.replace(reg_exp, "" );

    
if  (obj.value.indexOf( " . " ) !=- 1 ){
        
var  j = 1 ;
        
for (i = obj.value.substr(obj.value.indexOf( " . " )).length - 1 ;i > 0 ;i -- ){
            
if (obj.value.substr(obj.value.indexOf( " . " ) + i, 1 ) == " 0 " ){        
                j
+= 1 ;
            }
            
else {
                
break ;
            }
        }
        i
= obj.value.substr(obj.value.indexOf( " . " )).length;
        obj.value
= obj.value.substr( 0 ,obj.value.indexOf( " . " ) + i - j + 1 );
    }
    
with (document.selection.createRange())
    {
        moveStart(
" character " ,obj.value.length + 1 );
        collapse();
        select();
    }
}

具体调用如下:
 changeValue (obj,type)

  描述:输入字符的控制

  说明:

obj:需检查的客户端控件

type:输入类型

{normal: 包含数字、字母、汉字、下载线、中划线、()}

{integer:包含数字}

{decimal:包含数字、小数点}

{extend: 包含数字、字母、下载线、中划线、()}

{date: 包含数字、中划线}

{email: 包含数字、汉字、下划线、中划线、小数点、@}

  样例:

1) 邮件格式检测

<input type=”button” name=”txtMail” onKeyup=”changeValue(this,’email’);” >

2) 日期格式检测

<input type=”button” name=”txtDate” onKeyup=”changeValue(this,’date’);” >

3) 浮点数检测

<input type=”button” name=”txtNumber” onKeyup=”changeValue(this,’decimal’);” >

  blurValue(obj,type,length,prec)

  描述:失去焦点后,检查输入是否正确

  说明:

obj:需检查的客户端控件

type:输入类型

{decimal:验证输入值是否是浮点数及格式化浮点数、检查长度}

{date:验证输入值是否是日期格式及格式化日期但无需检查长度}

{email:验证输入值是否是email格式、检查长度}

{nullmode:仅检查输入值的长度}

  length:最大输入长度

  prec:小数位精度,默认2位

样例:

1)      浮点数

<input type=”button” name=”txtMail” onBlur=”blurValue(this,’decimal’,10,3);” >

2)      日期

<input type=”button” name=”txtDate” onBlur=”blurValue(this,’date’);” >

3)      邮件地址

<input type=”button” name=”txtMail” onBlur=”blurValue(this,’email’,20);” >

4)      仅检测长度

<input type=”button” name=”txt1” onBlur=”blurValue(this,’nullmode’,20);” >

注:changValue与blurValue配合使用

如果是浮点数检测还要与restoreFormat配合使用

  restoreFormat(obj)

  描述:恢复浮点数显示

  说明:内部函数,将格式化过的数据赋给obj.value对象

样例:<input type=”button”name=”txt1” onFocus=”restoreFormat(this);”>

另外在Asp.Net中调用方法如下:
        txtCJG.Attributes("onblur"= "javascript:blurValue(this,&apos;cbo&apos;,&apos;cboCJG&apos;);"
        txtCBSYR.Attributes("onkeyup"= "javascript:changeValue(this,&apos;normal&apos;);"
        txtCBSYR.Attributes("onblur"= "javascript:blurValue(this,&apos;nullmode&apos;,80);"

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值