在以前很多的web开发中,用到的表单验证也非常多,所以把以前写的整理了一下,列出了一个通用的表单验证脚本。以后的开发就可以不用再麻烦的去找了,带来了不少的方便。
如果还有什么需要补充的地方,希望和大家讨论。
本站提供了下载。
/********************************************************
auther 博爱老头
date 2006-12-25
*********************************************************/
function checkLength(obj,minLen,maxLen,objName){
/********************************************************
检查输入的值的长度是否合法。合法则返回true,非法返回false
obj: 需要检验的参数
minLen: 最小长度。若为-1,表示不限制最小长度
maxLen: 最大长度。若为-1,表示不限制最大长度
objName: 业务名称
*********************************************************/
var objValue = trim(eval(obj).value);
var len = objValue.length;
if(maxLen!=-1){
if(len>maxLen){
alert(objName+”的长度不能大于”+maxLen);
eval(obj).select();
return false;
}
}
if(minLen!=-1){
if(len
eval(obj).select();
return false;
}
}
return true;
}
function trim(val){
/************************************
去掉一个字符串的前后空格,
返回去掉空格后的字符串
************************************/
var v = val;
//去掉前后空格
while(v.length>0 && v.charAt(0)==” “){
v = v.substring(1);
}
while(v.length>0 && v.charAt(v.length-1)==” “){
v = v.substring(0,v.length-1);
}
return v;
}
function checkUsername(obj){
/************************************
检查用户名是否合法,合法则返回true,否则返回false
用户名只能由字母、数字、下划线、中划线组成,且只能以字母开头
*************************************/
var username = eval(obj).value;
username = trim(username);
var ch;
var len = username.length;
if(len20){
alert(“用户名的长度必须在4至20之间”);
eval(obj).select();
return false;
}
for(var i=0;i
if((ch>='A' && ch='a' && ch='0' && ch continue;
}else{ //非法字符
alert(“用户名只能由字母、数字、下划线组成”);
eval(obj).select();
return false;
}
}//end for i
ch = username.charAt(0);
if(!((ch>='A' && ch='a' && ch alert(“用户名只能以字母开头”);
eval(obj).select();
return false;
}
return true;
}
function checkEmpty(obj,objName){
/************************************
为空,则表示检查不通过,返回false,不为空,返回true;
*************************************/
var s=eval(obj).value;
s = trim(s);
if(s.length==0){
alert(objName+”不能为空,请输入!”);
eval(obj).focus();
return false;
}
return true;
}
function checkDataType(obj,objType,objName){
/*/////////////////////////////////////////////////
obj: String,需要检验的参数
objType: int,参数值的正确类型 (1:字符串;2:整数;3:数值;4:日期(yyyy-mm-dd);5:邮件地址;)
objName: String,参数的业务名称
*//////////////////////////////////////////////////
var objValue = eval(obj).value;
objValue = trim(objValue);
switch (objType){
case 2:
//检查是否数字
if (!isInt(objValue)){
alert(“错误!” + objName + “必须为整数,请重新输入!”);
eval(obj).select();
return false;
}
break;
case 3:
//检查是否数值
if (!isNumber(objValue)){
alert(“错误!” + objName + “必须为数值,请重新输入!”);
eval(obj).select();
return false;
}
break;
case 4:
//检查是否为日期
if (!isDate(objValue)){
alert(“错误!” + objName + “必须为日期,且格式如'1977-11-09',请重新输入!”);
eval(obj).select();
return false;
}
break;
case 5:
//检查是否为邮件地址
if(checkEmail(objValue)==false){
alert(“错误!请在” + objName + “输入有效的邮件地址!”);
eval(obj).select();
return false;
}
break;
case 8:
//检查是否为日期时间格式
if (isDateTime(objValue) == false){
alert(“错误!” + objName + “必须为日期,且格式如'1977-11-09 21:23:45',请重新输入!”)
eval(obj).select();
return false;
} else
return true;
break;
}
}
function isNumber(val){
/************************************
判断传入的变量是否为数字,是则返回true
*************************************/
//去掉前后空格
var v = trim(val);
if(v.length==0){
return false;
}
var num = parseFloat(v);
if(isNaN(num)){
return false;
}else{
return true;
}
}
function isInt(val){
/************************************
判断传入的变量是否为整数,是则返回true
************************************/
//去掉前后空格
var v = trim(val);
if(v.length==0){
return false;
}
for(var i=0;i
return false;
}
}
var num = parseInt(v);
if(isNaN(num)){
return false;
}else{
return true;
}
}
function isDate(DateString){
/************************************
验证是否为日期类型,是则返回true
只有格式如同以下的字符串才是日期时间型:'2004-04-22'
************************************/
var v = trim(DateString);
if (v==null) return true;
if (v == “”) return true;
var Dilimeter;
Dilimeter = '-';
var tempy='';
var tempm='';
var tempd='';
var tempArray;
if (v.length10)
return false;
tempArray = v.split(Dilimeter);
if (tempArray.length!=3)
return false;
if (tempArray[0].length==4)
{
tempy = tempArray[0];
tempd = tempArray[2];
}
else
{
tempy = tempArray[2];
tempd = tempArray[1];
}
tempm = tempArray[1];
var tDateString = tempy + '/'+tempm + '/'+tempd+' 8:0:0';
var tempDate = new Date(tDateString);
if (isNaN(tempDate))
return false;
while (tempm.substring(0,1) == “0”)
tempm = tempm.substring(1);
while (tempd.substring(0,1) == “0”)
tempd = tempd.substring(1);
if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1) && (tempDate.getDate()==parseInt(tempd)))
return true;
else
return false;
}
function isDateTime(DateTimeString){
/************************************
验证是否为日期时间类型,是则返回true
只有格式如同以下的字符串才是日期时间型:'2004-04-22 15:53:27'
************************************/
//去掉前后空格
var v = trim(DateTimeString);
if (v == null) return true;
if (v == “”) return true;
var timeStart = v.indexOf(” “);
var DateString = v.substring(0,timeStart);
if (DateString==null) return false;
var Dilimeter;
Dilimeter = '-';
var tempy='';
var tempm='';
var tempd='';
var tempArray;
if (DateString.length10){
return false;
}
tempArray = DateString.split(Dilimeter);
if (tempArray.length!=3)
{
return false;
}
if (tempArray[0].length==4)
{
tempy = tempArray[0];
tempd = tempArray[2];
}
else
{
tempy = tempArray[2];
tempd = tempArray[1];
}
tempm = tempArray[1];
var TimeString = v.substring(timeStart + 1);
Dilimeter = ':';
var temph='';
var tempmi='';
var temps='';
var tempArray1;
if (TimeString.length8){
return false;
}
tempArray1 = TimeString.split(Dilimeter);
if (tempArray1.length!=3){
return false;
}
temph = tempArray1[0];
tempmi = tempArray1[1];
temps = tempArray1[2];
var DateString = tempy + '/'+tempm + '/'+tempd+' ' + temph + ':' + tempmi + ':' + temps;
var tempDate = new Date(DateString);
if (isNaN(tempDate)){
return false;
}
while (tempm.substring(0,1) == “0”)
tempm = tempm.substring(1);
while (tempd.substring(0,1) == “0”)
tempd = tempd.substring(1);
if (temph.substring(0,1) == “0”)
temph = temph.substring(1);
if (tempmi.substring(0,1) == “0”)
tempmi = tempmi.substring(1);
if (temps.substring(0,1) == “0”)
temps = temps.substring(1);
if (((tempDate.getUTCFullYear()).toString()==tempy) &&
(tempDate.getMonth()==parseInt(tempm)-1) &&
(tempDate.getDate()==parseInt(tempd)) &&
(tempDate.getHours() == parseInt(temph)) &&
(tempDate.getMinutes() == parseInt(tempmi)) &&
(tempDate.getSeconds() == parseInt(temps))
){
return true;
}
else{
if ((tempm == “1”) && (tempd == “1”)){
if (((tempDate.getUTCFullYear()).toString()==parseInt(tempy)-1) &&
(tempDate.getMonth()==parseInt(tempm)-1) &&
(tempDate.getDate()==parseInt(tempd)) &&
(tempDate.getHours() == parseInt(temph)) &&
(tempDate.getMinutes() == parseInt(tempmi)) &&
(tempDate.getSeconds() == parseInt(temps))
){
return true;
}
}
return false;
}
}
function isEnglish(name) //英文值检测
{
/***********************************
如果name里的字符全部是ASCII码,返回true,否则返回false
************************************/
if(name.length == 0)
return false;
for(i = 0; i if(name.charCodeAt(i) > 128)
return false;
}
return true;
}
//检查是否IP地址
function checkIfIP(ipstr){
if (ipstr.length == 0) {
return false;
}
while(ipstr.length>0 && ipstr.charAt(0)==” “){
ipstr = ipstr.substring(1);
}
while(ipstr.length>0 && ipstr.charAt(ipstr.length-1)==” “){
ipstr = ipstr.substring(0,ipstr.length-1);
}
var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
var IPArray = ipstr.match(ipDomainPat);
if (IPArray != null) {
for (var i = 1; i if (IPArray > 255) {
return false;
}//if
}//for
return true;
}//if
}
//判断是否为EMAIL地址
function checkEmail(emailStr) {
if (emailStr.length == 0) {
return true;
}
var emailPat=/^(.+)@(.+)$/;
var specialChars=”\\(\\)@,;:\\\\\\\”\\.\\[\\]”;
var validChars=”\[^\\s” + specialChars + “\]”;
var quotedUser=”(\”[^\”]*\”)”;
var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
var atom=validChars + '+';
var word=”(” + atom + “|” + quotedUser + “)”;
var userPat=new RegExp(“^” + word + “(\\.” + word + “)*$”);
var domainPat=new RegExp(“^” + atom + “(\\.” + atom + “)*$”);
var matchArray=emailStr.match(emailPat);
if (matchArray == null) {
return false;
}
var user=matchArray[1];
var domain=matchArray[2];
if (user.match(userPat) == null) {
return false;
}
var IPArray = domain.match(ipDomainPat);
if (IPArray != null) {
for (var i = 1; i if (IPArray > 255) {
return false;
}
}
return true;
}
var domainArray=domain.match(domainPat);
if (domainArray == null) {
return false;
}
var atomPat=new RegExp(atom,”g”);
var domArr=domain.match(atomPat);
var len=domArr.length;
if ((domArr[domArr.length-1].length (domArr[domArr.length-1].length > 3)) {
return false;
}
if (len return false;
}
return true;
}
//EMAIL的判断
function isemail(str){
var flag=true;
if((str.length ==0) ||(str==null)){
flag=true;
}else{
var atindex =str.indexOf('@');
var dotindex=str.indexOf('.',atindex);
thesub =str.substring(0,dotindex+1);
if((atindex flag=false;
}else{
flag=true;
}
}
return(flag);
}
[/java]
[file]attachment/200704/validate.txt[/file]
var num = parseInt(v);
if(isNaN(num)){
return false;
}else{
return true;
}
这种写成 return !isNaN(parseInt(v)),简单也易懂
另外很多验证如果通过正则表达式来处理的,代码就会简洁的多
当然,我是用的规范的写法。