分享
 
 
 

通用表单验证函数-改进版

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

一、用法简介:

表单验证函数放在了functions.js文件里了,在你所需要做验证的网页文件里,包含该脚本文件。

对于焦点失去验证,为表单控件的onBlur事件绑定相应的验证函数,用法如下:

整型 checkNumber()

浮点型 checkNumber()

字符串 checkString()

日期 checkDate()

邮箱 checkEmail()

示例 onBlur="checkNumber()"

对于表单提交验证,在表单提交前进行判断,用法如下:

if(checkForm('表单名称'))

{

表单名称.submit();

return true;

}

else

{

return false;

}

也可以绑定表单onSubmit事件,用法如下:

onSubmit="return checkForm('表单名称')"

二、类型定义:

1、整型(int)

定义:

valueType="int"

属性:

objName 对象名称(字符串)

mustInput 必输项(true/false)

minInput 最小值(数字)

maxInput 最大值(数字)

举例:

<input type="text" name="test" valueType="int" objName="总载重吨" mustInput="true" maxInput="10000">

2、浮点型(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">

3、字符串(string)

定义:

valueType="string"

属性:

objName 对象名称(字符串)

mustInput 必输项(true/false)

stringLen 字符串长度(数字)

举例:

<input type="text" name="test" valueType="string" objName="英文船名" mustInput="true" stringLen="100">

4、日期(date)

定义:

valueType="date"

属性:

objName 对象名称(字符串)

mustInput 必输项(true/false)

举例:

<input type="text" name="test" valueType="date" objName="开始日期" mustInput="true">

备注:

日期现在只能校验的格式为(yyyy-mm-dd)

5、邮箱(email)

定义:

valueType="email"

属性:

objName 对象名称(字符串)

mustInput 必输项(true/false)

举例:

<input type="text" name="test" valueType="email" objName="邮箱" mustInput="true">

6、单选(radio)

定义:

valueType="radio"

属性:

objName 对象名称(字符串)

mustSelect 必输项(true/false)

举例:

<input type="radio" name="test" valueType="radio" objName="租船方式" mustSelect="true">

备注:

对于同一组单选按钮,只需要定义第一个即可。

7、复选(checkbox)

定义:

valueType="checkbox"

属性:

objName 对象名称(字符串)

minSelect 最小选择数(数字)

maxSelect 最大选择数(数字)

举例:

<input type="checkbox" name="test" valueType="checkbox" objName="爱好" minSelect="2" maxSelect="5">

备注:

对于同一组复选按钮,只需要定义第一个即可。

8、下拉列表框(select)

定义:

valueType="select"

属性:

objName 对象名称(字符串)

mustSelect 必输项(true/false)

举例:

<select name="test" valueType="select" objName="租船方式" mustSelect="true">

9、列表框(list)

定义:

valueType="list"

属性:

objName 对象名称(字符串)

minSelect 最小选择数(数字)

maxSelect 最大选择数(数字)

举例:

<select name="test" valueType="list" objName="爱好" minSelect="2" maxSelect="5">

三、程序文件

/****************************functions.js*******************************/

/***检查表单所有元素***/

function checkForm(formName)

{

var oForm=document.all(formName);

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=="true")

{

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(!validInt(eles[i]))

{

event.returnValue=false;

return false;

}

break;

//小数

case "float":

if(!validFloat(eles[i]))

{

event.returnValue=false;

return false;

}

break;

//字符串

case "string":

if(!validString(eles[i]))

{

event.returnValue=false;

return false;

}

break;

//日期

case "date":

if(!validDate(eles[i]))

{

event.returnValue=false;

return false;

}

break;

//邮件

case "email":

if(!validEmail(eles[i]))

{

event.returnValue=false;

return false;

}

break;

//单选按钮

case "radio":

if(!validRadio(eles[i]))

{

event.returnValue=false;

return false;

}

break;

//复选按钮

case "checkbox":

if(!validBox(eles[i]))

{

event.returnValue=false;

return false;

}

break;

//下拉列表框

case "select":

if(!validSelect(eles[i]))

{

event.returnValue=false;

return false;

}

break;

//列表框

case "list":

if(!validList(eles[i]))

{

event.returnValue=false;

return false;

}

break;

}

}

}

event.returnValue=true;

return true;

}

/***检查是否为数字***/

function checkNumber()

{

var ele=event.srcElement;

if(ele.valueType!=null)

{

if(ele.mustInput!=null && ele.mustInput=="true")

{

if(trim(ele.value)=="")

{

if(ele.objName!=null)

{

alert(ele.objName+"不可以为空");

}

else

{

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

}

ele.focus();

return false;

}

}

if(ele.valueType=="int")

checkInt(ele);

else if(ele.valueType=="float")

checkFloat(ele);

else

;

}

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()

{

var ele=event.srcElement;

if(ele.valueType!=null)

{

if(ele.mustInput!=null && ele.mustInput=="true")

{

if(trim(ele.value)=="")

{

if(ele.objName!=null)

{

alert(ele.objName+"不可以为空");

}

else

{

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

}

ele.focus();

return false;

}

}

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()

{

var ele=event.srcElement;

if(ele.valueType!=null)

{

if(ele.mustInput!=null && ele.mustInput=="true")

{

if(trim(ele.value)=="")

{

if(ele.objName!=null)

{

alert(ele.objName+"不可以为空");

}

else

{

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

}

ele.focus();

return false;

}

}

if(!isDate(ele.value))

{

alert("请输入有效日期(yyyy-mm-dd)");

ele.focus();

return false;

}

}

return true;

}

/***检查是否为电子邮箱***/

function checkEmail()

{

var ele=event.srcElement;

if(ele.valueType!=null)

{

if(ele.mustInput!=null && ele.mustInput=="true")

{

if(trim(ele.value)=="")

{

if(ele.objName!=null)

{

alert(ele.objName+"不可以为空");

}

else

{

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

}

ele.focus();

return false;

}

}

if(!isEmail(ele.value))

{

alert("请输入有效邮箱");

ele.focus();

return false;

}

}

return true;

}

/***验证是否为整数***/

function validInt(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 validFloat(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 validString(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 validDate(ele)

{

if(!isDate(ele.value)&&ele.value!="")

{

alert("请输入有效日期(yyyy-mm-dd)");

ele.focus();

return false;

}

return true;

}

/***验证是否为电子邮箱***/

function validEmail(ele)

{

if(!isEmail(ele.value))

{

alert("请输入有效邮箱");

ele.focus();

return false;

}

return true;

}

/***验证单选按钮是否需要选择***/

function validRadio(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 validBox(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 validSelect(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 validList(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;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有