JavaScript验证客户端提交数据的小程序[转]

8月份做的更新 [回复]

/*
文 件 名:validate_form.js
函 数 名:validateForm
函数功能:验证提交的表单
调用方法:<onSubmit="return validateForm(this.formElementName,'validateType','validateCondition')">,参数长度不限
变量释义:
变量名含义
i,j循环计数变量
vc_min,vc_max最小值、最大值
vObjvalidate object,要验证的对象
vTypevalidate type,验证类型
vConvalidate condition,验证条件
eNumerror number,错误数量
eMsgerror message,错误信息
cItemNumchecked item number,选中项目数
fErrMsgfinal error message,最终显示给用户看的错误信息
reregular expression,正则表达式
验证类型:
代码含义
FitRegEx必须完全匹配“用户自定义的正则表达式”
AntiRegEx不能出现“匹配用户自定义的正则表达式的字串”
NotBlank不可为空
IsNumeric数字
IsInt整数
IsEmail邮件地址
IsPlainText纯文本,不能包含HTML代码
LengthRange字符长度范围
NumericRange数字大小范围
IsEqualTo确认项(如密码)和第一次输入的是否相等
CheckLimit选中多少项
SelectValid选中有效项
作    者:覃健祥,chin@blogchina.com
最后编辑:2004年9月24日
*/
function validateForm() {
var i, j, vObj, vType, vCon, eNum = 0, eMsg = '', cItemNum = 0, fErrMsg='', re;
var args = validateForm.arguments;
for (i = 0; i < (args.length-2); i += 3)
{
vObj = args[i];
vType = args[i+1];
vCon = args[i+2];
switch (vType)
{
case 'FitRegEx':
re = vCon;
if ( vObj.value.search( re ) != 0 )
{
eNum ++;
eMsg += genErrMsg( eNum,vObj,'的值不符合要求' );
}
break;
case 'AntiRegEx':
re = vCon;
if ( vObj.value.search( re ) >= 0 )
{
eNum ++;
eMsg += genErrMsg( eNum,vObj,'的值不符合要求' );
}
break;
case 'NotBlank':
if ( vObj.value == '' )
{
eNum ++;
eMsg += genErrMsg(eNum,vObj,'没有填写');
}
break;
case 'IsNumeric':
if ( isNaN(vObj.value) ││ vObj.value == '' )
{
eNum ++;
eMsg += genErrMsg( eNum,vObj,'不是数字' );
}
break;
case 'IsInt':
re = /^[0-9]+$/;
if ( vObj.value.search(re) != 0 ││ vObj.value.substring(0,1) == 0 )
{
eNum ++;
eMsg += genErrMsg( eNum,vObj,'不是整数' );
}
break;
case 'IsEmail':
re = /^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+/.[a-zA-Z0-9_]+$/;
if ( vObj.value.search(re) != 0 )
{
eNum ++;
eMsg += genErrMsg( eNum,vObj,'不是有效Email地址' );
}
break;
case 'IsPlainText':
re = /<[a-zA-Z]+[^>]*>/;
if ( vObj.value.search(re) >= 0 )
{
eNum ++;
eMsg += genErrMsg( eNum,vObj,'不是纯文本,含有HTML标签' );
}
break;
case 'LengthRange':
vc_min = parseFloat( vCon.substring( 0,vCon.indexOf("to") ) );
vc_max = parseFloat( vCon.substring( vCon.indexOf("to")+2 ) );
if ( vObj.value.length < vc_min ││ vObj.value.length > vc_max )
{
eNum ++;
eMsg += genErrMsg( eNum,vObj,'的长度不在指定范围内' );
}
break;
case 'NumericRange':
vc_min = parseFloat( vCon.substring( 0,vCon.indexOf("to") ) );
vc_max = parseFloat( vCon.substring( vCon.indexOf("to")+2 ) );
if ( vObj.value < vc_min ││ vObj.value > vc_max )
{
eNum ++;
eMsg += genErrMsg( eNum,vObj,'的值不在指定范围内' );
}
break;
case 'IsEqualTo':
if ( vObj.value != vCon.value )
{
eNum ++;
eMsg += genErrMsg( eNum,vObj,'和第一次输入的不相等' );
}
break;
case 'CheckLimit':
vc_min = parseFloat( vCon.substring( 0,vCon.indexOf("to") ) );
vc_max = parseFloat( vCon.substring( vCon.indexOf("to")+2 ) );
if ( vc_max == -1 )//vc_max=-1表示没有上限
{
vc_max = vObj.length;
}
for (j = 0;j < vObj.length;j ++)
{
if ( vObj[j].checked )
{
cItemNum ++;
}
}
if ( cItemNum < vc_min ││ cItemNum > vc_max )
{
eNum ++;
eMsg += genErrMsg( eNum,vObj[0],'的选中项目数不在指定范围内' );
}
break;
case 'SelectValid':
if ( vObj.value == '' )
{
eNum ++;
eMsg += genErrMsg(eNum,vObj,'没有选中有效项');
}
break;
}
}
if ( eNum )
{
fErrMsg = '抱歉,您提交的数据存在' + eNum + '处错误:/n';
fErrMsg += '==============================/n';
fErrMsg += eMsg;
fErrMsg += '==============================/n';
fErrMsg += '/n请修改后再提交,谢谢!';
alert( fErrMsg );
return false;
}
}
function genErrMsg(eTimes,vObj,eType)
{
eMsg = eTimes + '. [ ' + vObj.title + ' ] ' + eType + '。/n';
return eMsg;
}

来源 http://blog.blogchina.com/article_22.56652.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值