一个很强的验证脚本
网络整理 - 07-26
var Page_ValidationVer = "125";var Page_IsValid = true;
var Page_BlockSubmit = false;
var Msg="";
///验证入口
function Page_ClientValidate()
{
var i;
for (i = 0; i < Page_Validators.length; i++) {
if(!ValidatorValidate(Page_Validators[i]))
{
MsgBox(Page_Validators[i]);
event.returnValue = false;
return false;
}
}
}
function MsgBox(val)
{
if(Msg!="")
{
Msg="(错误提示:"+Msg+")";
}
alert(ValidatorErrorMsg(val)+"\r\n"+Msg);
}
///单个验证
function ValidatorValidate(val) {
var control = ValidatorControl(val.controltovalidate);
value=ValidatorGetValue(control);
if(!MaxLength(val.MaxLength,value)) return false;
flag=true;
if(value=="")
{
control.focus();
Msg="文本框不能为空!";
return val.AllowNull=="True";
}
var dataType = val.DataType;
if(dataType=="Empty")
{
flag= true;
}
else if(dataType =="String")
{
flag = IsString(value);
}
else if(dataType =="Letter")
{
flag = IsLetter(value);
}
else if (dataType == "StringInteger") {
flag= IsStringInteger(value);
}
else if (dataType == "Integer") {
flag= IsInteger(value);
}
else if(dataType =="Chinese")
{
flag = IsChinese(value);
}
else if(dataType =="UnSignIntger")
{
flag = IsUnSignIntger(value);
}
else if(dataType == "Double") {
flag = IsDouble(value);
}
else if(dataType =="Email")
{
flag = IsEmail(value);
}
else if(dataType =="IP")
{
flag = IsIP(value);
}
else if(dataType =="Phone")
{
flag = IsPhone(value);
}
else if(dataType =="ZIP")
{
flag = IsZIP(value);
}
else if (dataType == "Currency") {
flag = IsCurrency(value);
}
else if (dataType == "Date") {
flag = IsDate(value);
}
else if(dataType =="Time")
{
flag = IsTime(value);
}
else if (dataType == "DateTime") {
flag = IsDateTime(value);
}
else
{
flag = IsOther(value);
}
if(flag==false)
{
control.focus();
}
return flag;
}
///获取验证的错误消息
function ValidatorErrorMsg(val)
{
return val.errormessage;
}
///获取控件对象
function ValidatorControl(id)
{
var control;
control = document.all[id];
return control
}
function ValidatorGetValue(control) {
if (typeof(control.value) == "string") {
return control.value;
}
if (typeof(control.tagName) == "undefined" && typeof(control.length) == "number") {
var j;
for (j=0; j < control.length; j++) {
var inner = control[j];
if (typeof(inner.value) == "string" && (inner.type != "radio" || inner.status == true)) {
return inner.value;
}
}
}
else {
return ValidatorGetValueRecursive(control);
}
return "";
}
function ValidatorGetValueRecursive(control)
{
if (typeof(control.value) == "string" && (control.type != "radio" || control.status == true)) {
return control.value;
}
var i, val;
for (i = 0; i<control.children.length; i++) {
val = ValidatorGetValueRecursive(control.children[i]);
if (val != "") return val;
}
return "";
}
function IsInteger(val)
{
reg=/^[-+]?\d*$/;
Msg="请输入阿拉伯数字!";
return Check(val,reg);
}
function IsDouble(val)
{
reg=/^[-+]?\d+(\.\d+)?$/;
Msg="请输入数字,如:5.63";
return Check(val,reg);
}
function IsEmail(val)
{
reg=/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
Msg="请输入合法的Email地址";
return Check(val,reg);
}
function IsCurrency(val)
{
reg=/^[$¥]?(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$/;
Msg="请输入金额,或以美元或人民币符号开头的数字,小数保留两位,如:¥1,000.00";
return Check(val,reg);
}
function IsString(val)
{
//reg=/^[a-zA-Z0-9_]+$/;
reg=/^\w+$/;
Msg="请输入规则字符串!";
return Check(val,reg);
}
function IsStringInteger(val)
{
reg=/^[a-zA-Z][0-9]+$/;
Msg="请输入首位是字母其他为数字的字符串,如:A0001";
return Check(val,reg);
}
function IsZIP(val)
{
reg=/^\d{6}$/;
Msg="请输入邮政编码,如:518000";
return Check(val,reg);
}
function IsIP(val)
{
reg=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
var r = val.match(reg);
Msg="请输入合法的IP地址,每段是0-255的整数!";
if(r==null) return false;
if(r[1]<256 && r[2] <256 && r[3]<256 && r[4]<256)
return true;
return false;
}
function IsPhone(val)
{
//reg=/((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}/;
reg=/^[1-9]\d{1,3}-\d{7,8}$|^[1-9]\d{9,10}$|^[1-9]\d{1,3}-\d{7,8}-\d{1,4}$/;
Msg="请输入电话号码,如755-88888888-1234!";
return Check(val,reg);
}
function IsUnSignIntger(val)
{
reg=/^\d*$/;
Msg="请输入阿拉伯数字!";
return Check(val,reg);
}
function IsLetter(val)
{
reg=/^[a-zA-Z]+$/;
Msg="请输入英文字母!";
return Check(val,reg);
}
function IsChinese(val)
{
reg=/^[\w\u00FF-\uFFFD]+$/ ///[^(!-\/)(\:-@)(\][-\'')]+$/g;
Msg="请输入字!";
return Check(val,reg);
}
function IsDate(val)
{
//reg=/([1-9][0-9]{3})-([(0|1) 0-9]{2})-([0-9]{2})/;
reg=/^(\d{4})-(\d{2})-(\d{2})$/
var r = val.match(reg);
if(r==null)return false;
r[2]=r[2]-1;
var d= new Date(r[1], r[2],r[3]);
if(d.getDate()!=r[3])
{
Msg="日期格式错误!";
return false;
}
if(d.getMonth()!=r[2])
{
Msg="月份格式错误!";
return false;
}
if(d.getFullYear()!=r[1])
{
Msg="年份格式错误!";
return false;
}
return true;
}
function IsTime(val)
{
reg=/^((20|21|22|23|[0-1]\d)\:[0-5][0-9])(\:[0-5][0-9])?$/
Msg="时间格式输入错误,如:12:59或15:12:00";
return Check(val,reg);
}
function IsDateTime(val)
{
if(val.length<11){Msg="日期时间长度不匹配!"; return false;}
if(IsDate(val.substring(0,10)))
{
return IsTime(val.substring(11,val.length));
}
return false;
}
function IsOther(value)
{
return true;
}
function Check(val,reg)
{
if(reg.test(val))
{
return true;
}
return false;
}
function MaxLength(maxlen,val)
{
if(maxlen==0) return true;
mylen = strlength(val);
if(mylen<=parseInt( maxlen))
{
return true;
}
Msg="输入的长度实际是"+mylen+",不能超过"+maxlen;
return false;
}
//判断字符长度 dev-club
function strlength(str)
{
var l=str.length;
var n=l
for (var i=0;i<l;i++)
{
if (str.charCodeAt(i)<0||str.charCodeAt(i)>255) n++
}
return n
}