8.2-8.8工作总结备份- -| 回首页 | 2004年索引 | - -C/C++/Perl/汇编/Java效率比较

四月份写的JavaScript验证客户端提交数据的小程序- -

                                      

// JavaScript Document
function validateForm() {
 var i,j,object_name,validate_object,validate_type,validate_condition,error_amount = 0,error_message = '';
 var args = validateForm.arguments;
 for (i=0; i<(args.length-2); i+=3)
  {
  object_name = args[i];
  validate_type = args[i+1];
  validate_condition = args[i+2];
  validate_object = document.getElementById(object_name);
  switch (validate_type)
   {
   case 'Required':
    if (validate_object.value == '')
     {
     error_amount ++;
     error_message += error_amount;
     error_message += '.[';
     error_message += validate_object.alt;
     error_message += ']值为空。 ';
     
     }
    break;
   case 'IsNumeric':
    if (isNaN(validate_object.value) || validate_object.value == '')
     {
     error_amount ++;
     error_message += error_amount;
     error_message += '.[';
     error_message += validate_object.alt;
     error_message += ']不是数字。 ';
     }
    break;
   case 'IsEmail':
    var re = /^[a-zA-Z0-9_]+$/;
    var str = validate_object.value;
    if (str.search(re) != 0)
     {
     error_amount ++;
     error_message += error_amount;
     error_message += '.[';
     error_message += validate_object.alt;
     error_message += ']不是正确的邮件地址。 ';
     }
    break;
   case 'IsInt':
    var re = /^[0-9]+$/;
    var str = validate_object.value;
    if (str.search(re) != 0)
     {
     error_amount ++;
     error_message += error_amount;
     error_message += '.[';
     error_message += validate_object.alt;
     error_message += ']不是整数。 ';
     }
    break;
   case 'IsUsername':
    var re = /^[a-zA-Z0-9_]+$/;
    var str = validate_object.value;
    if (str.search(re) != 0)
     {
     error_amount ++;
     error_message += error_amount;
     error_message += '.[';
     error_message += validate_object.alt;
     error_message += ']只能由字母、数字和下划线组成。 ';
     }
    break;
   case 'IsValidateCode':
    var re = /^[a-fA-F0-9]+$/;
    var str = validate_object.value;
    if (str.search(re) != 0)
     {
     error_amount ++;
     error_message += error_amount;
     error_message += '.[';
     error_message += validate_object.alt;
     error_message += ']只能由十六进制数字组成。 ';
     }
    break;
   case 'LengthRange':
    var vc = validate_condition;
    var min_length = vc.substring(0,vc.indexOf("-"));
    var max_length = vc.substring(vc.indexOf("-")+1);
    var str_length = validate_object.value.length;
    if (str_length < min_length || str_length > max_length)
     {
     error_amount ++;
     error_message += error_amount;
     error_message += '.[';
     error_message += validate_object.alt;
     error_message += ']的长度不在指定范围内。 ';
     }
    break;
   case 'NumericRange':
    var vc = validate_condition;
    var min_value = vc.substring(0,vc.indexOf("-"));
    var max_value = vc.substring(vc.indexOf("-")+1);
    if (parseFloat(validate_object.value) < min_value || parseFloat(validate_object.value) > max_value)
     {
     error_amount ++;
     error_message += error_amount;
     error_message += '.[';
     error_message += validate_object.alt;
     error_message += ']的值不在指定范围内。 ';
     }
    break;
   case 'IsEqual':
    var object1 = document.getElementById(args[i]);
    var object2 = document.getElementById(args[i+2]);
    if (object1.value != object2.value)
     {
     error_amount ++;
     error_message += error_amount;
     error_message += '.[';
     error_message += object1.alt;
     error_message += ']的值和';
     error_message += '[';
     error_message += object2.alt;
     error_message += ']的值不相等。 ';
     }
    break;
   }
  }
 if (error_amount)
  {
  final_error_message = '抱歉,您提交的数据存在' + error_amount + '处错误: ';
  final_error_message += error_message;
  final_error_message += ' 请修改后再提交,谢谢!';
  alert(final_error_message);
  return false;
  }
 else
  return true;
}


代码缩进还是不很理想。

算了,将就吧。

- 作者: 覃健祥 2004年08月14日, 星期六 16:59 加入博采

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=51022

回复

- 评论人:匿名网友

Thu Jan 20 15:26:04 CST 2005 

asd

- 评论人:覃健祥

Fri Oct 08 19:08:03 CST 2004 

/*
文 件 名: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;
}

评论内容: