javascript验证表单form的通用函数

 
本文作者:草上飞 如需转载,请注明转载地址。
做web开发的时候,相信大家都会遇到一个比较麻烦的问题。如在做一个form提交的时候,需要验证很多东西。如验证必填项是否填写、该填数字的是否填写了数字、应该为日期型的是否为日期型等等。如果一个form有10几个文本框或者几十个文本框的时候,我想这个工作量还是挺大的。我做项目的时候,就经常遇到这样的问题,为了偷偷懒,自己写了个javascript函数供自己使用,用起来比以前快多了。大家可以直接通过以下链接下载下面的两个文件。
实现如下:
name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1466660535697685&dt=1195090273437&lmt=1195090273&prev_fmts=728x15_0ads_al_s%2C728x90_as&format=336x280_as&output=html&correlator=1195090273437&url=http%3A%2F%2Fwww.newbooks.com.cn%2Finfo%2F168077.html&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=000000&color_border=FFFFFF&ad_type=text&ref=http%3A%2F%2Fwww.newbooks.com.cn&cc=16&ga_vid=1544903916.1195090273&ga_sid=1195090273&ga_hid=1437558649&flash=9&u_h=800&u_w=1280&u_ah=772&u_aw=1280&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency">
新建一个check.js文件,文件内容为:
//check.js开始
 //使用方法:在form提交事件里调用:return checkOwnRule(objfrm);传入参数为当前form对象。使用该函数的前提是页面必须包含check.js
 /**********
 更新日期:2007-4-1
 更新内容:如果没有设置文本框的hint属性,则弹出的警告框中默认显示控件名称。
 *****/
 function checkOwnRule(objfrm){
  var inputObj=objfrm.getElementsByTagName("input");
  for (i=0;i<inputObj.length;i++){
   if (!inputObj(i).getAttribute("hint")||inputObj(i).getAttribute("hint") == "")
   {
    strHint=inputObj(i).name;
   }else{
    strHint=inputObj(i).getAttribute("hint");
   }
 
   if (inputObj(i).getAttribute("allownull")=="false"){ //证明该输入框不允许为空,allow为自己在文本框中定义的属性。如<input type="text" name="UserName" allownull="false" hint="用户名">表示用户名不允许为空。Hint属性最好设置,因为在alert的时候会包含该值。
    if (inputObj(i).value==""){
     alert(strHint+"不能为空!");
     inputObj(i).focus();
     return false;
    }
   }
   //如果某项的class为digital,表示数字项。则检测是否为数字。
   if (inputObj(i).getAttribute("className")=="digital"){
    if (inputObj(i).value!=""&&isNaN(inputObj(i).value)){
     alert(strHint+"必须为数字!");
     inputObj(i).focus();
     return false;
    }
   }
   
   
   if (inputObj(i).getAttribute("isInt")=="true"){ //证明该输入框必须输入整数
    if (inputObj(i).value.indexOf(".")>=0){
     alert(strHint+"必须为整数!");
     inputObj(i).focus();
     return false;
    } 
   }
    
   if (inputObj(i).getAttribute("allowzero")=="false"){ //证明该输入框不允许输入0
    if (inputObj(i).value==0){
     alert(strHint+"不能为0!");
     inputObj(i).focus();
     return false;
    } 
   }     
   //如果isdate为true,表示该项为日期项,则必须输入日期
   if (inputObj(i).getAttribute("isdate")=="true"){
    if (inputObj(i).value!=""&&!checkdate(inputObj(i).value)){
     alert(strHint+"必须为正确的日期格式!");
     inputObj(i).focus();
     return false;
    }
   }
  
  } 
  
  var selectObj=objfrm.getElementsByTagName("select");
  for (i=0;i<selectObj.length;i++){
   if (selectObj(i).getAttribute("allownull")=="false"){ //证明该选择框不允许为空
    if (selectObj(i).value==""){
     alert(strHint+"不能为空!");
     selectObj(i).focus();
     return false;
    }
   }
  }
  return true;
 }
//该函数为检测是否为日期的函数。
function checkdate(str){
 var reg = /^(/d+)-(/d{1,2})-(/d{1,2})$/;
 var r = str.match(reg);
 if(r==null)return false;
 r[2]=r[2]-1;
 var d= new Date(r[1], r[2],r[3]);
 if(d.getFullYear()!=r[1])return false;
 if(d.getMonth()!=r[2])return false;
 if(d.getDate()!=r[3])return false;
 return true;
}
//check.js结束
Html文件中的写法:
<style>
.digital {text-align:right}
</style>
<script language="javascript" src="check.js"></script>
<a href="http://www.newbooks.com.cn">点击进入我的网站</a>
<form name="testform" action="" method="post" οnsubmit="return checkForm(this)">
用户名:<input type="text" name="username" hint="用户名" allownull="false">(必须输入)<br>
日期:<input type="text" name="testdate" hint="日期" allownull="false" isdate="true">(必须输入且为日期型)<br>
金额:<input type="text" name="testamount" hint="金额" allownull="false" class="digital">(必须输入且为数值型)<br>
数量:<input type="text" name="testqty" hint="数量" allownull="false" class="digital" isInt="true" allowzero="false">(必须输入且必须输入整数,且不能输入0)<br>
<input type="submit" value="提交">
</form>
<script language="javascript">
function checkForm(objform){
if (checkOwnRule(objform)){
        return true;
}else{
        return false;
}
}     
</script>
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值