[风雨者]

山高路远,风雨兼程!

伍维波ID:letsflytogether
80587次访问,排名1179好友8人,关注者90
一个非计算机专业毕业的,带着对计算机的热爱,如今从事在软件开发领域。我想,我已经证明了专业不应是我们就业的标尺。
除了软件开发,我的爱好还有篮球和美食。
letsflytogether的文章
原创 67 篇
翻译 0 篇
转载 58 篇
评论 116 篇
伍子的公告
    没有比人更高的山,
    没有比脚更长的路。
------------------------
    既然选择了远方,
    便只顾风雨兼程。
------------------------
    失败只有一种,
    就是半途而废。
------------------------
    天下难事必作于易,
    天下大事必作于细。
------------------------
    从用户的角度考虑,
    你就成功了一半。
------------------------
月 [下月] [上月]
最近评论
cqg1220:机柜
badonly:原来模板技术是这样的!!!谢了~~~
apollosun:恭喜啊

女儿就是宝,享福了啊

我女儿现在虚岁4岁,太可爱了,我每天下班回家的感觉就象过节。
letsflytogether:phpMVC是我两三年前接触的一个框架,为什么我选择它呢,是因为当时我首先接触了JAVA的Struts,学起来很好理解.但是如今我发现这个框架用起来稍嫌烦琐,代码更新也挺慢的.PHP语言同类型的框架还有cakePHP,ZendFramework,Symfony等,它们的发展都挺好的,而已有些是原生就支持ajax,你可以看看这些框架.其实框架是次要,最重要的还是思想.只不过有些时候思想过于抽象……
tjbaso:我暂时先把MVC搞定,接着就去弄XAJAX,天津用PHP的很少,可能还是去北京闯闯了,你的文章对我们来说是很有价值的。谢谢你。
文章分类
收藏
相册
个人风采
精品收藏
文章贴图
个人网站
女儿的博客
我在ITPUB上的博客
我在世界经理人上的博客
技术网站
CSDN
MSDN
UML软件工程组织
中国UI设计网
蓝色理想
软件工程专家网
休闲娱乐
学习网站
ICXO
网页设计师
金桥译港世界通
友情链接
heiyeluren的Blog(RSS)
博客中国上的琴剑楼
小肥羊
汉博园——陈希成
韦子的空中楼阁
资源网站
中国盟动力
太平洋电脑网
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 通用表单验证函数-改进版收藏

新一篇: php.MVC系列教程之前言 | 旧一篇: 天涯第一帖---四个女生一首歌

一、用法简介:
表单验证函数放在了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;
}

发表于 @ 2004年09月30日 15:06:00|评论(loading...)|编辑

新一篇: php.MVC系列教程之前言 | 旧一篇: 天涯第一帖---四个女生一首歌

评论

#WormCN's BLOG 发表于2005-09-15 09:51:00  IP:
TrackBack来自《通用表单验证函数-改进%...》

一、用法简介:<br>表单验证函数放在了functions.js文件里了,在你所需%A...
#酷拉皮卡 发表于2004-10-06 08:34:00  IP: 218.69.203.*
这个表单验证函数很不错。能否再添加一项“您两次输入的密码不一致,请重新输入”这一个密码确认校验呢。
#琴剑楼主 发表于2004-10-08 10:32:00  IP: 202.110.225.*
谢谢楼上的建议
稍微修改一下即可,其实这个表单验证函数最大的优点就是可扩展性,你可以随意补充其功能。
十、密码(password)
定义:
valueType="password"
属性:
objName 对象名称(字符串)
mustInput 必输项(true/false)
minLen 最小值(数字)
maxLen 最大值(数字)
举例:
<input name="test" valueType="password" objName="密码" minLen="2" maxLen="5">

//checkForm函数加入下面这一段
//密码
case "password":
if(!validPassword(eles[i]))
{
event.returnValue=false;
return false;
}
break;


//再加入下面的函数
/***验证密码是否输入一致***/
function validPassword(ele)
{
var pwds = document.getElementsByName(ele.name);
//alert('fdssssssssssssss');
//alert("var pwds="+name+"."+ele.name);
// eval("var pwds="+name+"."+ele.name);
if(pwds[0].value!=pwds[1].value)
{
alert("您两次输入的密码不一致,请重新输入");
ele.focus();
return false;
}
if(ele.minLen!=null && !isNaN(ele.minLen))
{
var value=new String(ele.value);
if(value.length<parseInt(ele.minLen))
{
alert("您输入的"+convertNullToSpace(ele.objName)+"最小长度为"+ele.minLen);
ele.focus();
return false;
}
}
if(ele.maxLen!=null && !isNaN(ele.maxLen))
{
var value=new String(ele.value);
if(value.length>parseInt(ele.maxLen))
{
alert("您输入的"+con
#琴剑楼主 发表于2004-10-08 10:36:00  IP: 202.110.225.*
另外修改一下日期验证的一个BUG
/***检查是否为日期格式***/
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)&&trim(ele.value)!="")
{
alert("请输入有效日期(yyyy-mm-dd)");
ele.focus();
return false;
}
}
return true;
}

/***验证是否为日期格式***/
function validDate(ele)
{
if(!isDate(ele.value)&&trim(ele.value)!="")
{
alert("请输入有效日期(yyyy-mm-dd)");
ele.focus();
return false;
}
return true;
}
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 伍子