JavaScript通用表单验证函数

表单定义:
< form name = " form1 "  action = ""  style = " behavior:url('form.htc') " ></ form >
客户端表单验证是由表单的onSubmit事件触发,由于表单的onSubmit事件只能由提交按钮触发,
所以如果要用函数提交表单form1.submit(),则必须同时执行form1.onSubmit()。

类型定义:

一、整型(
int )
定义:
valueType
= " int "
属性:
objName 对象名称(字符串)
mustInput 必输项(
true / false )
minInput 最小值(数字)
maxInput 最大值(数字)
举例:
< input type = " text "  name = " test "  valueType = " int "  objName = " 总载重吨 "  mustInput = " true "  maxInput = " 10000 " >

二、浮点型(
float )
定义:
valueType
= " float "
属性:
objName 对象名称(字符串)
mustInput 必输项(
true / false )
minInput 最小值(数字)
maxInput 最大值(数字)
decimalLen小数位数(数字)
举例:
< input type = " text "  name = " test "  valueType = " float "  objName = " 运价 "  mustInput = " true "  maxInput = " 10000.50 "  decimalLen = " 2 " >

三、字符串(string)
定义:
valueType
= " string "
属性:
objName 对象名称(字符串)
mustInput 必输项(
true / false )
stringLen 字符串长度(数字)
举例:
< input type = " text "  name = " test "  valueType = " string "  objName = " 英文船名 "  mustInput = " true "  stringLen = " 100 " >

四、日期(date)
定义:
valueType
= " date "
属性:
objName 对象名称(字符串)
mustInput 必输项(
true / false )
举例:
< input type = " text "  name = " test "  valueType = " date "  objName = " 开始日期 "  mustInput = " true " >
备注:
日期现在只能校验的格式为(yyyy
- mm - dd)

五、邮箱(email)
定义:
valueType
= " email "
属性:
objName 对象名称(字符串)
mustInput 必输项(
true / false )
举例:
< input type = " text "  name = " test "  valueType = " email "  objName = " 邮箱 "  mustInput = " true " >

六、单选(radio)
定义:
valueType
= " radio "
属性:
objName 对象名称(字符串)
mustSelect 必输项(
true / false )
举例:
< input type = " radio "  name = " test "  valueType = " radio "  objName = " 租船方式 "  mustSelect = " true " >
备注:
对于同一组单选按钮,只需要定义第一个即可。

七、复选(checkbox)
定义:
valueType
= " checkbox "
属性:
objName 对象名称(字符串)
minSelect 最小选择数(数字)
maxSelect 最大选择数(数字)
举例:
< input type = " checkbox "  name = " test "  valueType = " checkbox "  objName = " 爱好 "  minSelect = " 2 "  maxSelect = " 5 " >
备注:
对于同一组复选按钮,只需要定义第一个即可。

八、下拉列表框(select)
定义:
valueType
= " select "
属性:
objName 对象名称(字符串)
mustSelect 必输项(
true / false )
举例:
< select name = " test "  valueType = " select "  objName = " 租船方式 "  mustSelect = " true " >

九、列表框(list)
定义:
valueType
= " list "
属性:
objName 对象名称(字符串)
minSelect 最小选择数(数字)
maxSelect 最大选择数(数字)
举例:
< select name = " test "  valueType = " list "  objName = " 爱好 "  minSelect = " 2 "  maxSelect = " 5 " >


// ///////////////////////////////////////////////////////////////////////////////////////////////////////

<!--   ---------------------------------------------------------------------
//
//
 File: form.htc
//
 version: 1.0
//
 Description:客户端表单验证.
//
 author: 伍子
//
//
-------------------------------------------------------------------- -->
< PUBLIC:COMPONENT id = " formCheck "  urn = " wwb:formCheck " >  
< PUBLIC:ATTACH EVENT = " onsubmit "  ONEVENT = " checkForm() " />
< script language = " JavaScript " >
function  checkForm()
{
var oForm=event.srcElement;
var eles = oForm.elements;
//遍历所有表元素
for(var i=0;i<eles.length;i++)
{
//是否需要验证
var sType=eles[i].valueType;
if(sType)
{
if(eles[i].mustInput!=null && eles[i].mustInput)
{
if(trim(eles[i].value)=="")
{
if(eles[i].objName!=null)
{
alert(eles[i].objName
+"不可以为空");
}

else
{
alert(
"该文本框为必输字段");
}

eles[i].focus(); 
event.returnValue
=false
return false
}

}
 
switch(sType)
{
//整数
case "int":
if(!checkInt(eles[i]))
{
event.returnValue
=false;
return false;
}

break;
//小数
case "float":
if(!checkFloat(eles[i]))

event.returnValue
=false;
return false;
}

break;
//字符串
case "string":
if(!checkString(eles[i]))
{
event.returnValue
=false;
return false;
}

break;
//日期
case "date":
if(!checkDate(eles[i]))
{
event.returnValue
=false;
return false;
}

break;
//邮件
case "email":
if(!checkEmail(eles[i]))
{
event.returnValue
=false;
return false;
}

break;
//单选按钮
case "radio":
if(!checkRadio(eles[i]))
{
event.returnValue
=false;
return false;
}

break;
//复选按钮
case "checkbox":
if(!checkBox(eles[i]))
{
event.returnValue
=false;
return false;
}

break;
//下拉列表框
case "select":
if(!checkSelect(eles[i]))
{
event.returnValue
=false;
return false;
}

break;
//列表框
case "list":
if(!checkList(eles[i]))
{
event.returnValue
=false;
return false;
}

break;
}

}

}

event.returnValue
=true;
return true;
}


/***检查是否为整数***/
function  checkInt(ele)
{
if(!isInt(ele.value))
{
alert(
"请输入有效整数");
ele.focus();
return false;
}

else
{
if(ele.maxInput!=null && !isNaN(ele.maxInput))
if(parseInt(ele.maxInput)<parseInt(ele.value))
{
alert(
"您输入的"+ convertNullToSpace(ele.objName)+"值应该小于"+ele.maxInput); 
ele.focus();
return false;
}
 
if(ele.minInput!=null && !isNaN(ele.minInput))
if(parseInt(ele.minInput)>parseInt(ele.value))
{
alert(
"您输入的"+ convertNullToSpace(ele.objName)+"值应该大于"+ele.minInput);
ele.focus();
return false;
}
 
}

return true;
}


/***检查是否为小数***/
function  checkFloat(ele)
{
if(isNaN(ele.value))
{
alert(
"请输入有效数字");
ele.focus();
return false;
}

else
{
if(ele.decimalLen!=null && !checkDecimal(ele.value,ele.decimalLen))
{
alert(
"您输入的"+convertNullToSpace(ele.objName)+"值小数位最多为"+ele.decimalLen);
ele.focus(); 
return false;
}
 
if(ele.maxInput!=null && !isNaN(ele.maxInput))
if(parseInt(ele.maxInput)<parseInt(ele.value))
{
alert(
"您输入的"+ convertNullToSpace(ele.objName)+"值应该小于"+ele.maxInput); 
ele.focus();
return false;
}
 
if(ele.minInput!=null && !isNaN(ele.minInput))
if(parseInt(ele.minInput)>parseInt(ele.value))
{
alert(
"您输入的"+ convertNullToSpace(ele.objName)+"值应该大于"+ele.minInput);
ele.focus();
return false;
}
 
}

return true;
}


/***检查是否为字符串***/
function  checkString(ele)
{
if(ele.stringLen!=null && !isNaN(ele.stringLen))
{
var value=new String(ele.value);
if(value.length>parseInt(ele.stringLen))
{
alert(
"您输入的"+convertNullToSpace(ele.objName)+"最大长度为"+ele.stringLen);
ele.focus(); 
return false;
}

}

return true;
}

/***检查是否为日期格式***/
function  checkDate(ele)
{
if(!isDate(ele.value))
{
alert(
"请输入有效日期(yyyy-mm-dd)");
ele.focus();
return false;
}

return true;
}


/***检查是否为电子邮箱***/
function  checkEmail(ele)
{
if(!isEmail(ele.value))
{
alert(
"请输入有效邮箱");
ele.focus();
return false;
}

return true;
}

/***检查单选按钮是否需要选择***/
function  checkRadio(ele)
{
//var rads = document.getElementsByName(ele.name);
eval("var rads="+name+"."+ele.name);
var selectCount=0;
for(var i=0;i<rads.length;i++)
{
if(rads[i].checked)
{
selectCount
++;
}

}


if(ele.mustSelect!=null && ele.mustSelect)
{
if(selectCount==0)
{
alert(
"请选择"+convertNullToSpace(ele.objName));
ele.focus(); 
return false;
}

}

return true;
}

/***检查复选按钮是否需要选择***/
function  checkBox(ele)
{
//var rads = document.getElementsByName(ele.name);
eval("var chks="+name+"."+ele.name);
var selectCount=0;
for(var i=0;i<chks.length;i++)
{
if(chks[i].checked)
{
selectCount
++;
}

}

if(ele.minSelect!=null && !isNaN(ele.minSelect))
{
if(selectCount<parseInt(ele.minSelect))
{
alert(convertNullToSpace(ele.objName)
+"至少选择"+ele.minSelect+"");
ele.focus(); 
return false;
}

}

if(ele.maxSelect!=null && !isNaN(ele.maxSelect))
{
if(selectCount>parseInt(ele.maxSelect))
{
alert(convertNullToSpace(ele.objName)
+"至多选择"+ele.maxSelect+"");
ele.focus(); 
return false;
}

}

return true;
}

/***检查下拉列表框是否需要选择***/
function  checkSelect(ele)
{
//var rads = document.getElementsByName(ele.name);
if(ele.mustSelect!=null && ele.mustSelect)
{
if(ele.selectedIndex==0)
{
alert(
"请选择"+convertNullToSpace(ele.objName));
ele.focus(); 
return false;
}

}

return true;
}

/***检查列表框的选择项数***/
function  checkList(ele)
{
//var rads = document.getElementsByName(ele.name);
var selectCount=0;
for(var i=0;i<ele.options.length;i++)
{
if(ele.options[i].selected)
{
selectCount
++;
}

}

alert(selectCount);
if(ele.minSelect!=null && !isNaN(ele.minSelect))
{
if(selectCount<parseInt(ele.minSelect))
{
alert(convertNullToSpace(ele.objName)
+"至少选择"+ele.minSelect+"");
ele.focus(); 
return false;
}

}

if(ele.maxSelect!=null && !isNaN(ele.maxSelect))
{
if(selectCount>parseInt(ele.maxSelect))
{
alert(convertNullToSpace(ele.objName)
+"至多选择"+ele.maxSelect+"");
ele.focus(); 
return false;
}

}

return true;
}

/***判断是否为整数***/
function  isInt(s)
{
var patrn=/^[-,+]{0,1}[0-9]{0,}$/;
if (!patrn.exec(s))
return false;
return true;
}

/***判断是否为数字***/
function  isNumber(s)
{
var patrn=/^[-,+]{0,1}[0-9]{0,}[.]{0,1}[0-9]{0,}$/;
if (!patrn.exec(s))
return false;
return true;
}

/***判断是否为日期***/
function  isDate(str)
{
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
if(r==null)
{
return false;
}
 
var d= new Date(r[1], r[3]-1, r[4]); 
if(!(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]))

return false;
}

return true;
}

/***判断是否为邮箱***/
function  isEmail(str)
{
if(str.match(/[\w-]+@{1}[\w-]+\.{1}\w{2,4}(\.{0,1}\w{2}){0,1}/ig)!=str)
return false;
else
return true;
}

/***将NULL转化为空格,用于显示对象名称***/
function  convertNullToSpace(paramValue)
{
if(paramValue==null)
return "";
else 
return paramValue;
}

/***检查小数位数***/
function  checkDecimal(num,decimalLen)
{
var len = decimalLen*1+1;
if(num.indexOf('.')>0)
{
num
=num.substr(num.indexOf('.')+1,num.length-1); 
if ((num.length)<len)
{
return true;
}

else
{
return false;
}

}

return true;
}

/***去除空格***/
function  trim(str)
{
if (str.length > 0
{
while ((str.substring(0,1== " "&& (str.length > 0)) 
{
str 
= str.substring(1,str.length);
}

while (str.substring(str.length-1,str.length) == " "
{
str 
= str.substring(0,str.length-1);
}

}

return str;
}

</ script >
</ PUBLIC:COMPONENT >  

你可能感兴趣的:(JavaScript)