js通用数据检测方法(只完成js端大体功能,随会追加php端代码)

js通用数据检测方法,现在只完成js端大体功能,随会追加php端代码,用户只在php点指定检测类型,会自动生成客户端js检测代码,从而做到只定义一次检测代码实现客户端服务端全部检测,让程序制作更方便。下面退出js端的代码。

submitCheckFunc.js

//******************************************************

//通用JS客户端数据检测v1.0.20110705

//作者:ljl_xyfhttp://www.my400800.cn

//******************************************************/

functionsubmitCheckFunc(){

this.CheckObjArr=Array();

}

submitCheckFunc.prototype={

ErrMsg:"",

ErrObj:Array(),

CheckObjArr:Array(),//要检测的对象存放

SetFocusObj:null,

//____________________对象空判断__________________

IsNotNull:function(checkId){

varcheckobj=this.GetElementX(checkId);

strType=checkobj.type;

if(strType.indexOf("select")<0){

varcheckvalue=checkobj.value;

if(_IsNull(checkvalue)){

returnfalse;

}

}else{

varblCheckOk=false;

for(vari=checkobj.length-1;i>=0;i--){

varrOption=checkobj[i];

if(rOption.selected==true){

if(rOption.value!=""){

blCheckOk=true;

}

}

}

returnblCheckOk;

}

returntrue;

},

//____________________是否是数字检测______________

IsFloat:function(oNum){

if(!oNum)returnfalse;

varstrP=/^\d+(\.\d+)?$/;

if(!strP.test(oNum)){

returnfalse;

}

try{

if(parseFloat(oNum)!=oNum){

returnfalse;

}

}catch(ex){

returnfalse;

}

returntrue;

},

//____________________验证整数____________________

IsInteger:function(checkNum){

varregu=/^[-]{0,1}[0-9]{1,}$/;

returnregu.test(checkNum);

},

//____________________验证邮箱地址________________

IsEmail:function(strEmail){

if(strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/)!=-1)

returntrue;

returnfalse;

},

//____________________是否小于最大值______________

IsLessMax:function(strValue,strMaxValue){

if(this.IsFloat(strValue)){

if((strValue/1)>(strMaxValue/1)){

returnfalse;

}

}

returntrue;

},

//____________________是否大于最小值______________

IsGreaterMin:function(strValue,strMaxValue){

if(this.IsFloat(strValue)){

if((strValue/1)<(strMaxValue/1)){

returnfalse;

}

}

returntrue;

},

//____________________是否小于最大长度____________

IsLessMaxLen:function(strValue,iMaxlen){

if(!this._isNull(strValue)){

if(strValue.length>iMaxlen){

returnfalse;

}

}

returntrue;

},

//____________________是否大于最小长度____________

IsGreaterMinLen:function(strValue,iMinlen){

if(!this._isNull(strValue)){

if(strValue.length<iMinlen){

returnfalse;

}

}

returntrue;

},

//____________________是否是日期检测______________

IsDate:function(strValue){

//如果为空,则通过校验

if(this._isNull(strValue))

returntrue;

varpattern=/^((d{4})|(d{2}))-(d{1,2})-(d{1,2})$/g;

if(!pattern.test(strValue))

returnfalse;

vararrDate=strValue.split("-");

if(parseInt(arrDate[0],10)<100)

arrDate[0]=2000+parseInt(arrDate[0],10)+"";

vardate=newDate(arrDate[0],(parseInt(arrDate[1],10)-1)+"",arrDate[2]);

if(date.getYear()==arrDate[0]

&&date.getMonth()==(parseInt(arrDate[1],10)-1)+""

&&date.getDate()==arrDate[2])

returntrue;

else

returnfalse;

},

//____________________数据检测___________________

Check:function(){

this.ErrMsg="";

this.ErrObj=Array();

varcheckOneObj=null;

this.SetFocusObj=null;

//错误信息样式清除

this.Clear();

//项目信息检测

for(vari=0;i<this.CheckObjArr.length;i++){

checkOneObj=this.CheckObjArr[i];

varcheckOnedataObj=null;

for(varj=0;j<checkOneObj[2].length;j++){

checkOnedataObj=checkOneObj[2][j];

varcheckObj=this.GetElementX(checkOneObj[0]);

varcheckFunc;

if("IsNotNull"==checkOnedataObj[0]){

checkFunc="this."+checkOnedataObj[0]+"('"+checkOneObj[0]+"','"+checkOnedataObj[1]+"')";

}else{

checkFunc="this."+checkOnedataObj[0]+"('"+checkObj.value+"','"+checkOnedataObj[1]+"')";

}

//alert(checkFunc);

varcheckBL=eval(checkFunc);

if(!checkBL){

this.ErrMsg+="<li>"+checkOnedataObj[2]+"</li>";

checkObj.style.backgroundColor="yellow";

checkObj.title=checkOnedataObj[2];

if(this.SetFocusObj==null){

this.SetFocusObj=checkObj;

}

break;

}

}

}

if(this._isNull(this.ErrMsg)){

returntrue;

}else{

varerrMsgObj=this.GetElementX("errMsg");

if(errMsgObj){

errMsgObj.innerHTML=this.ErrMsg;

}else{

alert(this.ErrMsg);

}

this.SetFocusObj.focus();

returnfalse;

}

},

//____________________样式清除处理________________

Clear:function(){

for(vari=0;i<this.CheckObjArr.length;i++){

checkOneObj=this.CheckObjArr[i];

varcheckObj=this.GetElementX(checkOneObj[0]);

checkObj.style.backgroundColor="";

checkObj.title="";

varerrMsgObj=this.GetElementX("errMsg");

if(errMsgObj){

errMsgObj.innerHTML="";

}

}

},

//____________________添加要进行检测数据__________

AddCheckData:function(checkObj){

this.CheckObjArr[this.CheckObjArr.length]=checkObj;

},

//******************************************通用函数************start************************

//____________________取得指定名称对象____________

GetElementX:function(objName){

if(document.getElementById(objName)){

returndocument.getElementById(objName);

}elseif(document.getElementById(objName.split('$').join('_'))){

returndocument.getElementById(objName.split('$').join('_'));

}else{

returnnull;

}

},

//____________________项目空检测_________________

_isNull:function(value){

varstr=value;

if(str.length==0){

returntrue;

}else{

returnfalse;

}

}

//**********************************************通用函数*************end************************

}

测试用HTML文件

<html>

<head>

<title></title>

<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">

<scriptsrc="js/submitCheckFunc.js"></script>

</head>

<body>

姓名:<inputid="name"value=""><br>

年龄:<inputid="age"value=""><br>

网址:<inputid="url"value="http://www.my400800.cn"><br>

<script>

functioncheck(){

varcheckFrom=newsubmitCheckFunc();

checkFrom.AddCheckData(["name","姓名",[["IsNotNull","","姓名不能为空"],["IsLessMaxLen","10","姓名最大十个字符"]]]);

checkFrom.AddCheckData(["age","年龄",[["IsNotNull","","年龄不能为空"],["IsInteger","","年龄输入非数值"],["IsLessMax","150","年龄最大不能超过150"]]]);

checkFrom.AddCheckData(["url","网址",[["IsNotNull","","网址不能为空"],["IsLessMaxLen","150","网址最大不能操作150个字符"]]]);

checkFrom.Check();

}

</script>

<inputtype="button"value="检测测试"onclick="check();">

<ulid="errMsg"style="color:red">

</ul>

</body>

</html>



效果如下:

刚打开页面效果

姓名:

年龄:

网址:

单击检测后页面效果

姓名:

年龄:

网址:

  • 姓名不能为空
  • 年龄不能为空
  • 网址不能为空

输入数据检测结果

姓名:

年龄:

网址:

姓名不能为空

相关推荐