common.js---validate检测(只对 有自定义属性的控件进行检测)
/*
func: 公共js
description:
在数据验证的 控件中
对要进行验证的控件
先添加 chname属性 如 chname="用户名" 如果出错 就显示 “用户名 出错”
func: 公共js
description:
在数据验证的 控件中
对要进行验证的控件
先添加 chname属性 如 chname="用户名" 如果出错 就显示 “用户名 出错”
再添加 datatype 或者maxsize或者nullable="no"
其他的具体验证方法 看 verifyinput
*/
其他的具体验证方法 看 verifyinput
*/
/* 检测指定FORM表单所有应被检测的元素(那些具有自定义属性的元素)是否合法,此函数用于表单的 onsubmit="return verifyAll(this)" 事件 */
function verifyAll(myform)
{
var i;
//alert('调用了verifyAll共'+myform.elements.length+'元素');
for (i=0;i<myform.elements.length;i++)
{
/* 非自定义属性的元素不予理睬 */
if (myform.elements[i].chname+""=="undefined") continue;
/* 校验当前元素 */
if (verifyInput(myform.elements[i])==false)
{
myform.elements[i].focus();
return false;
}
}
return true;
//alert('调用了verifyAll共'+myform.elements.length+'元素');
for (i=0;i<myform.elements.length;i++)
{
/* 非自定义属性的元素不予理睬 */
if (myform.elements[i].chname+""=="undefined") continue;
/* 校验当前元素 */
if (verifyInput(myform.elements[i])==false)
{
myform.elements[i].focus();
return false;
}
}
return true;
}
/* 检测指定文本框输入是否合法 */
function verifyInput(input)
{
var image;
var i;
var error = false;
function verifyInput(input)
{
var image;
var i;
var error = false;
/* 长度校验 */
if (strlen(input.value)>parseInt(input.maxsize))
{
alert(input.chname+"超出最大长度"+input.maxsize);
error = true;
}
else
/* 非空校验 */
if (input.nullable=="no"&&isnull(input.value))
{
alert(input.chname+"不能为空");
error = true;
}
else
{
/* 数据类型校验 */
switch(input.datatype)
{
case "number": if (isnumber(input.value)==false)
{
alert(input.chname+"值应该全为数字");
error = true;
}
alert('debug=>>调用了number');
break;
case "email": if (checkemail(input.value)==false && !isnull(input.value))
{
alert(input.chname+"正确格式为 abc@abc.com!");
error = true;
}
break;
case "date": if (IsDate(input.value,'-')==false && !isnull(input.value))
{
alert(input.chname+"日期格式应为2005-08-12 !");
error = true;
}
break;
/* 在这里可以添加多个自定义数据类型的校验判断 */
/* case datatype1: ... ; break; */
/* case datatype2: ... ; break; */
/* ....................................*/
default : break;
}
}
/* 根据有无错误设置或取消警示标志
if (strlen(input.value)>parseInt(input.maxsize))
{
alert(input.chname+"超出最大长度"+input.maxsize);
error = true;
}
else
/* 非空校验 */
if (input.nullable=="no"&&isnull(input.value))
{
alert(input.chname+"不能为空");
error = true;
}
else
{
/* 数据类型校验 */
switch(input.datatype)
{
case "number": if (isnumber(input.value)==false)
{
alert(input.chname+"值应该全为数字");
error = true;
}
alert('debug=>>调用了number');
break;
case "email": if (checkemail(input.value)==false && !isnull(input.value))
{
alert(input.chname+"正确格式为 abc@abc.com!");
error = true;
}
break;
case "date": if (IsDate(input.value,'-')==false && !isnull(input.value))
{
alert(input.chname+"日期格式应为2005-08-12 !");
error = true;
}
break;
/* 在这里可以添加多个自定义数据类型的校验判断 */
/* case datatype1: ... ; break; */
/* case datatype2: ... ; break; */
/* ....................................*/
default : break;
}
}
/* 根据有无错误设置或取消警示标志
在控件旁边 加个 "check_" 前缀 好让 用图片显示
*/
if (error)
{
objcheck= document.getElementById("img_"+input.name);
objcheck.innerHtml="http://www.d5jr.com/images/check_error.gif";
return false;
}
else
{
{
objcheck= document.getElementById("img_"+input.name);
objcheck.innerHtml="http://www.d5jr.com/images/check_error.gif";
return false;
}
else
{
objcheck= document.getElementById("img_"+input.name);
objcheck.innerHtml=" http://www.d5jr.com/images/check_space.gif";
return true;
}
}
objcheck.innerHtml=" http://www.d5jr.com/images/check_space.gif";
return true;
}
}
/**/
/* 取得字符串的字节长度 */
function
strlen(str)
...
{
var i;
var len;
len = 0;
for (i=0;i<str.length;i++)
...{
if (str.charCodeAt(i)>255) len+=2; else len++;
}
return len;
}


/**/
/* 检测字符串是否为空 */
function
isnull(str)
...
{
var i;
for (i=0;i<str.length;i++)
...{
if (str.charAt(i)!=' ') return false;
}
return true;
}


/**/
/* 检测字符串是否全为数字 */
function
isnumber(str)
...
{
var number_chars = "1234567890";
var i;
for (i=0;i<str.length;i++)
...{
if (number_chars.indexOf(str.charAt(i))==-1) return false;
}
return true;
}

function
checkemail(string)
...
{
if(string.length!=0)...{
if (string.charAt(0)=="." || string.charAt(0)=="@"|| string.indexOf('@', 0) == -1 || string.indexOf('.', 0) == -1 || string.lastIndexOf("@")==string.length-1 || string.lastIndexOf(".") ==string.length-1)
...{
//alert("Email地址的格式不正確!正确格式为abc@abc.com!!");
return false;
}
}
else...{
//alert("Email地址不能为空!");
return false;
}
return true;
}

function
IsDate(DateString , Dilimeter)
...
{
if (DateString==null) return false;
if (Dilimeter=='' || Dilimeter==null)
Dilimeter = '-';
var tempy='';
var tempm='';
var tempd='';
var tempArray;
if (DateString.length<8 && DateString.length>10)
return false;
tempArray = DateString.split(Dilimeter);
if (tempArray.length!=3)
return false;
if (tempArray[0].length==4)
...{
tempy = parseInt(tempArray[0],10);
tempd = parseInt(tempArray[2],10);
}
else
...{
tempy = parseInt(tempArray[2],10);
tempd = parseInt(tempArray[1],10);
}
tempm = parseInt(tempArray[1],10);
var tDateString = tempy + '/'+tempm + '/'+tempd+' 8:0:0';//加八小时是因为我们处于东八区
var tempDate = new Date(tDateString);
if (isNaN(tempDate))
return false;
if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1) && (tempDate.getDate()==parseInt(tempd)))
...{
return true;
}
else
...{
return false;
}
}


function
LTrim(s)
...
{
for(var i=0;i < s.length;i++)
if(s.charAt(i)!=' ')
return s.substring(i,s.length);
return "";
}

function
RTrim(s)
...
{
for(var i=s.length-1;i>=0;i--)
if(s.charAt(i)!=' ')
return s.substring(0,i+1);
return "";
}

function
Trim(s)
...
{
return RTrim(LTrim(s));
}
本文介绍了一种基于自定义属性的表单验证方法,通过添加特定属性到表单元素来实现不同类型的验证,包括长度、非空及数据类型检查等。
4025

被折叠的 条评论
为什么被折叠?



