表单验证

来源:互联网 发布:vivo x7plus网络参数 编辑:程序博客网 时间:2024/04/20 06:53

基于项目需要自己做了表单验证,验证邮箱、整数、电话号码等之类的东西。

 

var LcadeValidatorArr=new Array();

 

var regexEnum = 

{

intege:"^-?[1-9]//d*$",//整数

intege1:"^[1-9]//d*$",//正整数

intege2:"^-[1-9]//d*$",//负整数

num:"^([+-]?)//d*//.?//d+$",//数字

num1:"^[1-9]//d*|0$",//正数(正整数 + 0)

num2:"^-[1-9]//d*|0$",//负数(负整数 + 0)

decmal:"^([+-]?)//d*//.//d+$",//浮点数

decmal1:"^[1-9]//d*.//d*|0.//d*[1-9]//d*$",  //正浮点数

decmal2:"^-([1-9]//d*.//d*|0.//d*[1-9]//d*)$",  //负浮点数

decmal3:"^-?([1-9]//d*.//d*|0.//d*[1-9]//d*|0?.0+|0)$",  //浮点数

decmal4:"^[1-9]//d*.//d*|0.//d*[1-9]//d*|0?.0+|0$",   //非负浮点数(正浮点数 + 0)

decmal5:"^(-([1-9]//d*.//d*|0.//d*[1-9]//d*))|0?.0+|0$",  //非正浮点数(负浮点数 + 0)

email:"^//w+((-//w+)|(//.//w+))*//@[A-Za-z0-9]+((//.|-)[A-Za-z0-9]+)*//.[A-Za-z0-9]+$", //邮件

color:"^[a-fA-F0-9]{6}$",//颜色

url:"^http[s]?://////([//w-]+//.)+[//w-]+([//w-./?%&=]*)?$",//url

chinese:"^[//u4E00-//u9FA5//uF900-//uFA2D]+$",//仅中文

ascii:"^[//x00-//xFF]+$",//仅ACSII字符

zipcode:"^//d{6}$",//邮编

mobile:"^(13|15)[0-9]{9}$",//手机

ip4:"^(25[0-5]|2[0-4]//d|[0-1]//d{2}|[1-9]?//d)//.(25[0-5]|2[0-4]//d|[0-1]//d{2}|[1-9]?//d)//.(25[0-5]|2[0-4]//d|[0-1]//d{2}|[1-9]?//d)//.(25[0-5]|2[0-4]//d|[0-1]//d{2}|[1-9]?//d)$",//ip地址

notempty:"^//S+$",//非空

picture:"(.*)//.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$",//图片

rar:"(.*)//.(rar|zip|7zip|tgz)$",//压缩文件

date:"^//d{4}(//-|///|/.)//d{1,2}//1//d{1,2}$",//日期

qq:"^[1-9]*[1-9][0-9]*$",//QQ号码

tel:"^(([0//+]//d{2,3}-)?(0//d{2,3})-)?(//d{7,8})(-(//d{3,}))?$",//电话号码的函数(包括验证国内区号,国际区号,分机号)

username:"^//w+$",//用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串

letter:"^[A-Za-z]+$",//字母

letter_u:"^[A-Z]+$",//大写字母

letter_l:"^[a-z]+$",//小写字母

idcard:"^[1-9]([0-9]{14}|[0-9]{17})$"//身份证

};

 

function LoadFormValidator(vals){

    var formobjId=typeof vals.inputId!='undefined'? vals.inputId:null;

var formRegex=typeof vals.regex!='undefined'? vals.regex:null;

var formMaxLength=typeof vals.max!='undefined'? vals.max:null;

var formMinLength=typeof vals.min!='undefined'? vals.min:null;

var formEnableEmpty=typeof vals.enableEmpty!='undefined'? vals.enableEmpty:false;

var formIsNumber=typeof vals.isNumber!='undefined'? vals.isNumber:false;

var formShowTip=typeof vals.showTip!='undefined'? vals.showTip:"";

var formErrorTip=typeof vals.errorTip!='undefined'? vals.errorTip:"输入的格式错误,请重新输入!";

var formEmptyTip=typeof vals.emptyTip!='undefined'? vals.emptyTip:"不能为空!";

    if(formobjId==null){

  return;

}

if(!$(formobjId)){

   return;

}

var bResult=false;

if(formEnableEmpty){

   bResult=true;

}

    var settings = 

{

objId:formobjId,

regex:formRegex,

max:formMaxLength,

min:formMinLength,

enableEmpty:formEnableEmpty,

showTip:formShowTip,

errorTip:formErrorTip,

emptyTip:formEmptyTip,

isNumber:formIsNumber,

result:bResult

};

    LcadeValidatorArr.push(settings);

    $(formobjId).onfocus=LcadeFocus;

    $(formobjId).onblur=LcadeBlur;

}

 

function LcadeFocus(){

    for(var i=0;i<LcadeValidatorArr.length;i++){

        if(LcadeValidatorArr[i].objId==this.id){

            if(LcadeValidatorArr[i].showTip!=""){

                var tipId=this.id+"Tip";

                LcadeCreateTip(this,tipId);

                LcadeFormShow(tipId,"onShow",LcadeValidatorArr[i].showTip);

            }

            break;

        }

    }

};

function LcadeBlur(){

    for(var i=0;i<LcadeValidatorArr.length;i++){

        if(LcadeValidatorArr[i].objId==this.id){

            var value=this.value;

            var tipId=this.id+"Tip";

            LcadeCreateTip(this,tipId);

            if(!LcadeValidatorArr[i].enableEmpty){

                //不允许为空

                if(value.length==0){

                    LcadeFormShow(tipId,"onError",LcadeValidatorArr[i].emptyTip);

                    LcadeValidatorArr[i].result=false;

                    return;

                }

            }

            if(LcadeValidatorArr[i].enableEmpty&&value.length==0){

                //允许为空

                $(tipId).style.display="none";

                LcadeValidatorArr[i].result=true;

                return;

            }

            var b=true;

            if(LcadeValidatorArr[i].regex){

                var re=RegExp(LcadeValidatorArr[i].regex);

                if(!re.test(value)){

                   LcadeFormShow(tipId,"onError",LcadeValidatorArr[i].errorTip);

                   LcadeValidatorArr[i].result=false;

                   b=false;

                }

            }

            if(b){

                var maxLength=LcadeValidatorArr[i].max;

                var minLength=LcadeValidatorArr[i].min;

                if(!LcadeValidatorArr[i].isNumber){

                    //字符串长度

                    var length=fucCheckLength(value);

                    if(maxLength){

                        if(length>maxLength){

                            LcadeFormShow(tipId,"onError","输入的内容长度超出"+maxLength+"个字符!");

                            LcadeValidatorArr[i].result=false;

                            b=false;

                        }

                    }

                    if(minLength){

                        if(length<minLength){

                            LcadeFormShow(tipId,"onError","输入的内容长度小于"+minLength+"个字符");

                            LcadeValidatorArr[i].result=false;

                            b=false;

                        }

                    }

                }

                else{

                    //数字大小

                    if(maxLength){

                        if(value>maxLength){

                            LcadeFormShow(tipId,"onError","输入的内容不能大于"+maxLength+"!");

                            LcadeValidatorArr[i].result=false;

                            b=false;

                        }

                    }

                    if(minLength){

                        if(value<minLength){

                            LcadeFormShow(tipId,"onError","输入的内容不能小于"+minLength+"!");

                            LcadeValidatorArr[i].result=false;

                            b=false;

                        }

                    }

                }

            }

            if(b){

                LcadeFormShow(tipId,"onSuccess","输入正确!");

                LcadeValidatorArr[i].result=true;

            } 

            break;

        }

    }

};

 

function LcadeCreateTip(o,id){

    if(!$(id)){

        var top=FormgetAbsoluteTop(o);

        var left=FormgetAbsoluteLeft(o)+FormgetElementWidth(o);

        var tip=document.createElement("div");

        tip.id=id;

        var strStyle="position:absolute;top:"+top+"px;left:"+left+"px;";

        tip.style.cssText=strStyle;

        document.body.appendChild(tip);

    }

    else{

        $(id).style.display="";

    }

};

 

function LcadeFormShow(id,clName,showText){

    $(id).className=clName;

    $(id).innerHTML=showText;

};

 

function fucCheckLength(strTemp){

    var i;var sum;    

    sum=0;    

    for(i=0;i<strTemp.length;i++){    

      if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255))    

        sum=sum+1;    

      else   

        sum=sum+2;    

    }    

    return sum;   

};

 

function ValidatorResult(){

    var bResult=true;

    for(var i=0;i<LcadeValidatorArr.length;i++){

        if(!LcadeValidatorArr[i].result){

            $(LcadeValidatorArr[i].objId).focus();

            $(LcadeValidatorArr[i].objId).blur();

            bResult=false;

        }

    }

    return bResult;

}

 

function FormgetElementWidth(o) {

    return o.offsetWidth;

};

function FormgetAbsoluteLeft(o) {

    var oLeft = o.offsetLeft;

    while(o.offsetParent!=null) {

        oParent = o.offsetParent;

        oLeft += oParent.offsetLeft;

        o = oParent;

    }

    return oLeft;

};

function FormgetAbsoluteTop(o){

    var oTop = o.offsetTop;

    while(o.offsetParent!=null) {

        oParent = o.offsetParent;

        oTop += oParent.offsetTop;

        o = oParent;

    }

    return oTop;

};

 

function $(v){

    var o=document.getElementById(v);

    if(o){

        return o;

    }

    else{

        return null;

    }

};

 

调用方法:

LoadFormValidator({inputId:"Text1",regex:regexEnum.email,showTip:"例如:(fjqzdeyi@163.com)"});

LoadFormValidator({inputId:"Text2",regex:regexEnum.intege,enableEmpty:true,isNumber:true,max:30,min:20});

LoadFormValidator({inputId:"Text3",regex:regexEnum.email,showTip:"例如:(fjqzdeyrrrrri@163.com)"});

LoadFormValidator({inputId:"Text4",enableEmpty:true,max:10,min:5});

function v(){

    var b=ValidatorResult();

    if(b){

        alert("验证通过!");

    }

    else{

        alert("验证失败!");

    }

}

原创粉丝点击