ValidateUti.js
/**/
/**
*
* <p>Title: ValidateUti.js</p>
* <p>Description: the js be include to validate form data.</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: Freeborders</p>
* @author Rukee Fan
* @version 1.1 2004-08-05
* @see sample page: validateSample.htm
*/
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function FBvalidater()
{
this.clearinvalidControlList();
this.clearvalidater();
}
![None.gif](/Images/OutliningIndicators/None.gif)
FBvalidater.prototype
=
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
validateobj_obj : [],
errorMessage : '',
invalidControlList : [],
firstinvalidControl : null,
AutoFocus : true,
AutoSelect : true,
DATE_FORMAT : "yyyy-mm-dd",
addvalidater : function(validater)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
var a_lenght = this.validateobj_obj.length;
this.validateobj_obj[a_lenght] = validater;
},
addrequirevalidater : function(ValidateControl,ErrorMessage)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
var obj_validate = new requirevalidater(ValidateControl,ErrorMessage) ;
this.addvalidater(obj_validate);
},
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
addcomparevalidater : function(ValidateControl,CompairMethod,DataType,CompairValue,ErrorMessage)
{
var obj_validate = new comparevalidater(ValidateControl,CompairMethod,DataType,CompairValue,ErrorMessage);
this.addvalidater(obj_validate);
},
clearvalidater : function()
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
var Temp_obj = new Array();
this.validateobj_obj = Temp_obj;
},
validate : function()
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
this.clearinvalidControlList();
this.errorMessage = "";
var errormessage = "";
var i=0;
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
for (i=0;i<=(this.validateobj_obj.length-1);i++)
{
var obj = this.validateobj_obj[i].ValidateControl;
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (obj.length)
{
var subobj;
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
for (subobj in obj)
{
//----- 2004-08-05 add by rukee.fan -----
// when validate a obj array with same error message, only display this message one time.
var validatereturn = this.validateobj(obj[subobj],this.validateobj_obj[i]);
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (validatereturn!=false)
{
this.addToinvalidControlList(obj[subobj]);
errormessage = errormessage + validatereturn;
break;
}
//----- 2004-08-05 add by rukee.fan -----
}
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
}else
{
var validatereturn = this.validateobj(obj,this.validateobj_obj[i])
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (validatereturn!=false)
{
this.addToinvalidControlList(obj);
errormessage = errormessage + validatereturn;
}
}
}
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (errormessage!="")
{
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (this.AutoFocus)
{
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
try
{
this.firstinvalidControl.focus();
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
}catch(e)
{}
}
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (this.AutoSelect)
{
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
try
{
this.firstinvalidControl.select();
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
}catch(e)
{}
}
this.errorMessage = errormessage;
return false;
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
}else
{
return true;
}
},
validateobj : function(obj,validater)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (validater.ValidateType.toLowerCase()=="require"&&obj.value.trim()=="")
{
return validater.ErrorMessage;
}
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (validater.ValidateType.toLowerCase()=="compare")
{
var CompairValue = validater.CompairValue;
var IsComparePass;
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (validater.DataType.toLowerCase()=="length")
{
CompairValue = parseInt(CompairValue);
if (isNaN(CompairValue))
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
alert("CompairValue parameter error,it must be a integer.");
return false;
}
IsComparePass = eval(obj.value.toString().length.toString() + validater.CompairMethod + CompairValue.toString())
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (IsComparePass)
{
return false;
}
return validater.ErrorMessage;
}
if (obj.value.trim()=="") return false;
var get_inputvalue; //get the value passed the validate.
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (validater.DataType.toLowerCase()=='number')
{
var ls_TempValue=obj.value.ChangeToNum();
if (isNaN(ls_TempValue))
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return validater.ErrorMessage;
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
}else
{
get_inputvalue = obj.value.trim();
}
}
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (validater.DataType.toLowerCase()=='int')
{
get_inputvalue = obj.value.trim();
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (get_inputvalue.toString()!= parseInt(get_inputvalue).toString())
{
return validater.ErrorMessage;
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
}else
{
}
}
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (validater.DataType.toLowerCase()=='date')
{
get_inputvalue = obj.value.parseDate(this.DATE_FORMAT);
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (get_inputvalue)
{
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
}else
{
return validater.ErrorMessage;
}
}
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (validater.CompairMethod.toLowerCase() != "typecheck")
{
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (validater.DataType=='date')
{
get_inputvalue = get_inputvalue.getTime().toString();
CompairValue = validater.CompairValue.parseDate(this.DATE_FORMAT);
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (CompairValue)
{
CompairValue = CompairValue.getTime().toString();
}
}
IsComparePass = eval(get_inputvalue + validater.CompairMethod + CompairValue)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (!IsComparePass)
{
return validater.ErrorMessage;
}
}
}
return false;
},
addToinvalidControlList : function(obj)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
var a_lenght = this.invalidControlList.length;
this.invalidControlList[a_lenght] = obj;
this.firstinvalidControl = this.invalidControlList[0];
},
clearinvalidControlList : function()
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
var Temp_obj = new Array();
this.invalidControlList = Temp_obj;
firstinvalidControl = null;
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function requirevalidater()
{
this.ValidateControl = "";
this.ValidateType = "require";
this.ErrorMessage = "";
}
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function requirevalidater(ValidateControl,ErrorMessage)
{
this.ValidateControl = ValidateControl;
this.ValidateType = "require";
this.ErrorMessage = ErrorMessage;
}
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function comparevalidater()
{
this.ValidateControl = "";
this.ValidateType = "compare";
this.CompairMethod = "TypeCheck"; // >; >= ; = ; <= ; <;
this.DataType = ""; //number; int; Date; Length;
this.CompairValue = "";
this.ErrorMessage = "";
}
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function comparevalidater(ValidateControl,CompairMethod,DataType,CompairValue,ErrorMessage)
{
this.ValidateControl = ValidateControl;
this.ValidateType = "compare";
if (CompairMethod=="") CompairMethod = "TypeCheck";
this.CompairMethod = CompairMethod; // TypeCheck ; > ; >= ; = ; <= ; <;
this.DataType = DataType; //number; int; Date; Length;
this.CompairValue = CompairValue;
this.ErrorMessage = ErrorMessage;
}
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/**
* parseDate(format)
* parse a string to date
*/
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
String.prototype.parseDate
=
function(format)
{
var dateVal = this;
if(dateVal==undefined) return false;
if(dateVal==null) return false;
dateVal=dateVal.trim();
if(format.length!=dateVal.length) return false;
var dateArr=["","","","","",""];
for(z=0;z<format.length;z++)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
switch(format.charAt(z))
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
case "d":dateArr[0]+=dateVal.charAt(z);break;
case "m":dateArr[1]+=dateVal.charAt(z);break;
case "y":dateArr[2]+=dateVal.charAt(z);break;
case "h":dateArr[3]+=dateVal.charAt(z);break;
case "i":dateArr[4]+=dateVal.charAt(z);break;
case "s":dateArr[5]+=dateVal.charAt(z);break;
}
};
for(z=0;z<dateArr.length;z++)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if(isNaN(dateArr[z]))return false;
dateArr[z]=new Number(dateArr[z]);
};
if(dateArr[0]<1||dateArr[0]>31) return false;
if(dateArr[2]<100)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
dateArr[2]+=1900;
if(dateArr[2]<1950)dateArr[2]+=100;
}
if(dateArr[3]>24)return false;
if(dateArr[5]>60)return false;
if(dateArr[0]==31&&(dateArr[1]==2||dateArr[1]==4||dateArr[1]==6||dateArr[1]==9||dateArr[1]==11)) return false;
if(dateArr[0]==29&&dateArr[1]==2&&dateArr[2]%4!=0)return false;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
return new Date(dateArr[2],dateArr[1]-1,dateArr[0],dateArr[3],dateArr[4],dateArr[5]);
}
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/**
* trim()
* Use null string to replace space before and after of the string;
*/
String.prototype.trim
=
function()
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
return this.replace(/(^s*)|(s*$)/g, "");
}
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/**
* ChangeToNum()
* change string to number;
*/
String.prototype.ChangeToNum
=
function()
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
var r, re;
re = / /g;
r=this.replace(re, "");
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (r=="")
{
r="ls_null";
}
var reg = /^[-|+]?[d]+(.)?[d]*$/;
var r2 =r.match(reg);
if(r2==null) r = parseFloat("abc"); // return a NaN;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
return(r);
}
validateSample.htm
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html
style
="width:600px;height:600px"
>
<
title
>
Fabric Details
</
title
>
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
<
style
type
="text/css"
>
<!--
td
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
}{
word-break:normal;
}
//-->
</
style
>
<
META
name
="GENERATOR"
content
="IBM WebSphere Studio"
>
<
script
language
="javascript"
src
="ValidateUti.js"
></
script
>
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
<
script
language
="javascript"
>
<!--
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
function checkFormData()
{
//new a validater
var myFBvalidater = new FBvalidater();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
validate1 = new requirevalidater()
validate1.ValidateControl = SB_Asset_Details_form.LocalAssetImage;
validate1.ErrorMessage = "Please select a local image ! ";
myFBvalidater.addvalidater(validate1);
var objarray=new Array();
objarray[1]=SB_Asset_Details_form.LocalAssetID;
objarray[0]=SB_Asset_Details_form.Description;
// addrequirevalidater(ValidateControl,ErrorMessage) 向校验对象中新增需要校验不为空的控件对象。
//参数一ValidateControl: 待校验的控件对象,可以是一个控件,也可以是一个控件数组
//参数二 ErrorMessage: 如果校验不通过返回的错误信息。
myFBvalidater.addrequirevalidater(objarray, "Field can not been null! ")
//addcomparevalidater(ValidateControl,CompairMethod,DataType,CompairValue,ErrorMessage) 向校验对象中新增需要进行比较校验(数据类型,数据范围)的控件对象。
//第一个参数ValidateControl:是指定待校验的控件对象,可以是一个控件,也可以是一个控件数组。
//第二个参数CompairMethod:指定校验方法,包括 (TypeCheck, >, >=, =, <, <=)
//第三个参数DataType:指定数据类型,包括 (number, int, Date, Length )
//第四个参数CompairValue:指定校验的比较值,如果是字符校验,则指定长度,如果是对页面中的两个控件的值进行比较,此参数可以是要进行比较的控件的值(如:validateForm.modiDate.value)。
//第五个参数ErrorMessage:如果校验不通过返回的错误信息
//所有参数必须输入,当第二个参数是'TypeCheck', 则第三个参数不能是'Length'
// validate a integer type input field;
myFBvalidater.addcomparevalidater(SB_Asset_Details_form.txt_typenumber,'TypeCheck','number','','Please input a integer! ');
// validate a number input field, must bigger than 7.
myFBvalidater.addcomparevalidater(SB_Asset_Details_form.txt_compairnumber,'>','number','7','Please input a integer big than 7! ');
// validate a number input field, must bigger than another number input field.
myFBvalidater.addcomparevalidater(SB_Asset_Details_form.txt_compairnumber,'>','number',SB_Asset_Details_form.txt_typenumber.value,'compairnumber must bigger than typenumber! ');
// validate a datetime input field.
myFBvalidater.addcomparevalidater(SB_Asset_Details_form.txt_inputDate,'TypeCheck','date','','Please input a DateTime! ');
// validate a datetime input field, must bigger than 2003-04-01.
myFBvalidater.addcomparevalidater(SB_Asset_Details_form.txt_inputDate,'>','date','2003-04-01','Please input a DateTime biger than 2003-04-01! ');
// validate a input field, length must less or equal than 10.
myFBvalidater.addcomparevalidater(SB_Asset_Details_form.Description,'<=','Length','10','field length must <= 10! ');
// validate()
// returnvalue: true or false
if (myFBvalidater.validate())
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
alert("validate passed!");
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
} else
{
alert(myFBvalidater.errorMessage);
}
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
//-->
</
script
>
<
body
id
="bodyTable"
BGCOLOR
="#FFFFFF"
>
<
form
name
="SB_Asset_Details_form"
method
="POST"
enctype
="multipart/form-data"
>
<
input
type
="text"
name
="LocalAssetID"
size
="26"
value
=""
><
br
>
<
textarea
name
="Description"
cols
="41"
rows
="5"
onkeypress
="javascript:if(this.value.length>248){return false;}"
>
few
</
textarea
><
br
>
<
input
type
="file"
name
="LocalAssetImage"
size
="26"
value
=""
onkeydown
="javascript:return false;"
><
br
>
Number(int):
<
input
type
="input"
name
="txt_typenumber"
size
="26"
value
=""
><
br
>
Compair Number( >7 ):
<
input
type
="input"
name
="txt_compairnumber"
size
="26"
value
=""
><
br
>
Date:
<
input
type
="input"
name
="txt_inputDate"
size
="26"
value
=""
><
br
>
<
input
type
="button"
name
="Save"
value
="Save"
onclick
="javascript:checkFormData();"
class
="blueButton"
>
![None.gif](/Images/OutliningIndicators/None.gif)
</
form
>
</
body
>
</
html
>
转载于:https://www.cnblogs.com/rukeefan/archive/2004/08/09/31534.html