基于项目需要自己做了表单验证,验证邮箱、整数、电话号码等之类的东西。
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).οnfοcus=LcadeFocus;
$(formobjId).οnblur=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("验证失败!");
}
}