JS表单检验

以前对于表单里字段验证,是通过每个JSP写JS函数。感觉太落后。前段时间找到一个好方法。接下来我介绍具体实现
首先是JSP核心代码
程序代码 程序代码

<script language="javascript">
   function valid(){
var fields= new Array();
var i=0;
  fields[i++] = new Field("tests1","测试不能为空",true,0,true,25);
  fields[i++] = new Field("test2","测试是电子邮件格式",true,0,true,25);
  fields[i++] = new Field("test3","测试是身份证号码",true,0,true,25);
var flag=checkDocument(fields);
return flag;      
    }
</script>

<form name="form" action="test.action" method="post" onSubmit="return valid();">

<table>

<tr><td><input type="text" name="company.name" id="test1"></td></tr>

<tr><td><input type="text" name="company.email" id="test2"></td></tr>

<tr><td><input type="text" name="company.cer" id="test3"></td></tr>

<tr>
      <td align="center" colspan="6"><input type="submit" name="Submit"
       value="确 认" />
      <button onclick="javascript:history.back();" class=binput>返回</button>
      </td>
     </tr>

</table>

封装好的一个JS代码:
程序代码 程序代码

/**
*检查提交的数据是否符合要求
* fields为自定义的对象
* 符合要求时返回true否则提示并返回假
*/
function checkDocument(fields)
{


var strmsg ;
var i = 0;
var count = fields.length;
var field,name, message, isNull, strtype,isLen,strlength;
var thisform;
strmsg = "";

for(i=0; i<count; i++)
{
  field = fields;
  name=field.name;
  message=field.message;
  isNull=field.isNull;
  strtype=field.strtype;
  isLen=field.isLen;
  strlength=field.strlength;
  thisform=eval("document.getElementById('"+name+"')");
  
  //不允许为空时却为空
  if(isNull)
    {
     if(trim(thisform.value)==""){
    strmsg=strmsg+message+"不能为空\n";
     }
     }
  //允许为空时,事实为空时给一个缺省的值0
  if(trim(thisform.value)=="") {strtype=0;};

  //输入了时判断输入的正确性
  switch(strtype){
  case 0:
   {
     break;
   }

    case 1:
   {
     if(!isFloat(thisform.value)){
     strmsg=strmsg+message+"一定是数字\n";
     }
     break;
   }
    case 2:
   {
    if(!isFloat(thisform.value)){
     strmsg=strmsg+message+"一定是数字\n";
     }
    break;
   }
    case 3:
   {
    if(!isPercent(thisform.value)){
     strmsg=strmsg+message+"一定是百分数\n";
     }
    break;
   }
     case 4:
   {
    if(!isHZ(thisform.value)){
     strmsg=strmsg+message+"一定是汉字\n";
     }
    break;
   }
      case 5:
   {
    if(!notHZ(thisform.value)){
     strmsg=strmsg+message+"一定不是汉字\n";
     }
    break;
   }
       case 6:
   {
    if(!isEmail(thisform.value)){
     strmsg=strmsg+message+"一定是邮件格式\n";
     }
    break;
   }
       case 7:
   {
     break;
   }
       case 8:
   {
     break;
   }
       case 9:
   {
    if(!isInt(thisform.value)){
     strmsg=strmsg+message+"一定是整型\n";
     }
    break;
   }
       case 10:
   {
     if(!isTime(thisform.value)){
     strmsg=strmsg+message+"一定是时间\n";
     }
     break;
   }
   case 11:
   {
     //var ss = isHttp(thisform.value);
     //thisform.value = ss;
     if(!isHttp(thisform.value)){
       strmsg=strmsg+message+"网址格式不对,应该如http://www.szcly.com\n";
     }
     break;
   }
  }//end switch
  if (isLen){
      if(strlen(thisform.value)>strlength){
         strmsg=strmsg+message+"字符串太长,超过"+strlength+"位\n";
      }
  }
}


if(strmsg!=""){
   alert(strmsg);
   return false;
}
else
{
          return true;
}

}




[本日志由 Fly 于 2008-05-21 01:30 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 0 | 引用: 0 | 查看次数: 1651
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 关闭 | [img]标签 关闭