JS表单验证函数

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>全部JS表单验证函数集合</title>
</head>
<script language="javascript">
//验证是否为空
function CheckIsNull(Inform,Inputname,Inputvalue){
   var Form=Inform+"."
eval("Temp="+Form+Inputname+".value;");
if(Temp==""){
 alert("提醒您:"+Inputvalue+"不能为空!");
 eval(Form+Inputname+".className='RedInput';");
 eval(Form+Inputname+".focus();");
 return false;
}else{
 eval(Form+Inputname+".className="+Form+Inputname+".className.replace('RedInput','');");
    return true;
}
}
//验证长度的函数,首先调用验证是否为空的函数!
function CheckLength(Inform,Inputname,Inputvalue,InputMinSize,InputMaxSize){
//验证是否为空!
if (!CheckIsNull(Inform,Inputname,Inputvalue)) return false;
else{
var Form=Inform+"."
eval("Temp="+Form+Inputname+".value;");
if (Temp.length<parseInt(InputMinSize)||Temp.length>parseInt(InputMaxSize)){
alert(Inputvalue+"的长度必须在"+InputMinSize+"-"+InputMaxSize+"之间!");
eval(Form+Inputname+".className='RedInput';");
 eval(Form+Inputname+".focus();");
return false;}
else{
 eval(Form+Inputname+".className="+Form+Inputname+".className.replace('RedInput','');");
    return true;
}
}
}
//验证长度函数二,该函数主要判断当不要求是否为空、只要求最大长度的时候使用
function CheckLengthTwo(Inform,Inputname,Inputvalue,InputMaxSize){
var Form=Inform+"."
eval("Temp="+Form+Inputname+".value;");
if (Temp.length>parseInt(InputMaxSize)){
alert(Inputvalue+"的长度必须小于"+InputMaxSize+"!");
eval(Form+Inputname+".className='RedInput';");
 eval(Form+Inputname+".focus();");
return false;}
else{
 eval(Form+Inputname+".className="+Form+Inputname+".className.replace('RedInput','');");
    return true;
}
}
//验证是否为合法email的函数
function CheckIsEmail(Inform,Inputname,Email){
   if (!CheckIsNull(Inform,Inputname,Email))return false;
   else{
      var Form=Inform+"."
         eval("Temp="+Form+Inputname+".value;");
      if(Temp.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/)==-1)
          { alert("提醒您:"+Email+"格式不正确!");
            eval(Form+Inputname+".className='RedInput';");
            eval(Form+Inputname+".focus();");
            return false;
             }
   else{
         eval(Form+Inputname+".className="+Form+Inputname+".className.replace('RedInput','');");
            return true;
       }
      }  
}
//验证是否是数字
function CheckIsNum(Inform,Inputname,Num){
   if (!CheckIsNull(Inform,Inputname,Num))return false;
else{
         var Form=Inform+"."
         eval("Temp="+Form+Inputname+".value;");
      if(isNaN(Temp)){
                    alert("提醒您:"+Num+"应该为数字!");
                    eval(Form+Inputname+".className='RedInput';");
                    eval(Form+Inputname+".focus();");
                    return false;
                     }
   else{
        eval(Form+Inputname+".className="+Form+Inputname+".className.replace('RedInput','');");
           return true;
          }
    }
}
//验证是否为手机号码
function CheckIsMobile(Inform,Inputname,Mobile){
   if (!CheckIsNull(Inform,Inputname,Mobile))return false;
   else{
  var Form=Inform+"."
  eval("Temp="+Form+Inputname+".value;");
  if(Temp.search(/^1[3|5]\d{9}$/)==-1)
  {   alert("提醒您:"+Mobile+"不为合法手机号码!");
   eval(Form+Inputname+".className='RedInput';");
   eval(Form+Inputname+".focus();");
   return false;
  }
  else{
           eval(Form+Inputname+".className="+Form+Inputname+".className.replace('RedInput','');");
              return true;
       }
 }
}
//验证是否为日期  文本框中输入的。
function CheckIsDate(Inform,Inputname,date){
//.先判断是否为空,如果为空,直接返回false
 if(!CheckIsNull(Inform,Inputname,date)) return false;
 else{
var Form=Inform+".";
 //.再判断是否为日期格式
 eval("DateValue="+Form+Inputname+".value;");
 //.如果是数字的话,返回false
 if(DateValue.substring(4,5)!="-"||isNaN(DateValue.substring(0,4))||DateValue.substring(0,1)=="0"){
 alert(date+"格式不正确,格式:yyyy-mm-dd,且年份第一位不能为0,不能包含字母!");
 eval(Form+Inputname+".className='RedInput';");
 eval(Form+Inputname+".focus();");
 return false;
 }else{//.总体判断月开始
  if(DateValue.indexOf("-")==DateValue.lastIndexOf("-")||isNaN(DateValue.substring(5,DateValue.lastIndexOf("-")))||DateValue.substring(5,DateValue.lastIndexOf("-")).length>2||DateValue.substring(5,DateValue.lastIndexOf("-"))>12){
  alert(date+"格式不正确,格式:yyyy-mm-dd,且月份不能大于12,不能包含字母!");
  eval(Form+Inputname+".className='RedInput';");
  eval(Form+Inputname+".focus();");
  return false;
  }else{//.总体判断日期开始
   if(DateValue.substring(DateValue.lastIndexOf("-")+1).length>2||DateValue.substring(DateValue.lastIndexOf("-")+1)>31||isNaN(DateValue.substring(DateValue.lastIndexOf("-")+1)) ){
   alert(date+"格式不正确,格式:yyyy-mm-dd,且日期不能大于31,不能包含字母!");
   eval(Form+Inputname+".className='RedInput';");
   eval(Form+Inputname+".focus();");
   return false;
   }else{//.开始判断月份的大小
   var year=DateValue.substring(0,4);
   var month=DateValue.substring(5,DateValue.lastIndexOf("-"));
   var day=DateValue.substring(DateValue.lastIndexOf("-")+1);
     if(parseInt(month)==2){//..判断二月的情况
  if (year%4==0 && year%100 !=0 ||year%400 ==0 ){
    if(day>29){
     alert(date+"不正确,"+year+"年的二月最多只有29天!");
        eval(Form+Inputname+".className='RedInput';");
        eval(Form+Inputname+".focus();");
        return false;
    }
  }else{
   if(day>28){
     alert(date+"不正确,"+year+"年的二月最多只有28天!");
        eval(Form+Inputname+".className='RedInput';");
        eval(Form+Inputname+".focus();");
        return false;
    }
  }
  }//.判断二月结束
  else if(parseInt(month)==1||parseInt(month)==3||parseInt(month)==7||parseInt(month)==8||month==10||month==12){//.判断有31天月份开始
     if(day>31){
  alert(date+"不正确,"+parseInt(month)+"月最多只有31天!");
        eval(Form+Inputname+".className='RedInput';");
        eval(Form+Inputname+".focus();");
        return false;
  }
 }//.判断有31的函数结束。
  else{//.有30天的情况
     if(day>30){
  alert(date+"不正确,"+parseInt(month)+"月最多只有30天!");
        eval(Form+Inputname+".className='RedInput';");
        eval(Form+Inputname+".focus();");
        return false;
  }
   } //.判断日期为30天结束   
   }  //.判断月份结束
  }//.总体判断日期结束
 }//..总体判断月结束
return true;
}
}
//验证是否选中单选框
function CheckRadio(Inputform,Inputname,Inputvalue){
var Form=Inputform+".";
var InputName=Inputname;
var flag=false;
eval("len="+Form+InputName+".length");
for (i=0;i<parseInt(len);i++){
eval("val="+Form+InputName+"["+i+"]"+".checked");
if(val){
flag=true;
}
}
if (flag==false){
alert("提醒您:"+Inputvalue+"必须选择!");
return false;

}else{
              return true;
}
}
//判断复选框是否被选中
function CheckCheckbox(Inputform,Inputname,Inputvalue){
       var Form=Inputform+".";
 var InputName=Inputname; 
 var flag=false;       
       eval("len0="+Form+InputName+".length;");
 eval("len="+parseInt(len0));
       for(i=0;i<len;i++){
  eval("val="+Form+InputName+"["+i+"].checked");
           if (val){
     flag=true;
  }
       }
if(flag==true){
    return true;
 }
else
{
    alert("提醒您:请选择"+Inputvalue+"!");
    return false;
}
}
//验证下拉列表框是否选定!
function CheckSelect(Inputform,Inputname,Inputvalue){
     var Form=Inputform+".";
  var InputName=Inputname;
  eval("val="+Form+InputName+".value;");
  if (val==""){
     alert("提醒你:请选择"+Inputvalue+"!");
  return false;
  }else{return true;}
}

 

//.验证日期下拉列表
function getDateForSelect(Inputform,Inputyear,Inputmonth,Inputday)
{
  var Form=Inputform+".";
  var Year=Inputyear+".";
  var Month=Inputmonth+".";
  var Day=Inputday+".";
  eval(Form+Year+"options.length=100;");
 for  (i=0;i<100;i++)
  {
  eval(Form+Year+"options[i].text=1950+i;");
  eval(Form+Year+"options[i].value=1950+i;");
  }
  eval(Form+Month+"options.length=12");
  for (i=0;i<12;i++)
  {
    eval(Form+Month+"options[i].text=1+i;");
    eval(Form+Month+"options[i].value=1+i;");
  }
 //日期判断
 eval("months="+Form+Month+"value;");
 eval("years="+Form+Year+"value;");
   if ("2".indexOf(months) != -1)
   {
   if (years%4==0 && years%100 !=0 ||years%400 ==0 )
   {
   eval(Form+Day+"options.length=29;");
     for (i=0;i<29;i++)
  {
  eval(Form+Day+"options[i].text=i+1;");
  eval(Form+Day+"options[i].value=i+1;");
     }
   }
   else
   {
     eval(Form+Day+"options.length=28;");
     for (i=0;i<28;i++)
  {
      eval(Form+Day+"options[i].text=i+1;");
  eval(Form+Day+"options[i].value=i+1;");
     }
   }
   }
 else if ("135781012".indexOf(months) != -1)
   {
       eval(Form+Day+"options.length=31;");
        for (i=0;i<31;i++)
     {
           eval(Form+Day+"options[i].text=i+1;");
        eval(Form+Day+"options[i].value=i+1;");
   }
   }
   else
    {
      eval(Form+Day+"options.length=30;");
       for (i=0;i<30;i++)
    {
           eval(Form+Day+"options[i].text=i+1;");
        eval(Form+Day+"options[i].value=i+1;");
       }
    }
}
//下拉列表框日期显示JS + 加上时间回显JS:Lyear,Lmonth,Lday(这三个变量分别代表隐藏域中的三个值)(暂时还是不好用)
/**/
function getDateForSelected(Inputform,Inputyear,Inputmonth,Inputday,Lyear,Lmonth,Lday)
{
  var Form=Inputform+".";
  var Year=Inputyear+".";
  var Month=Inputmonth+".";
  var Day=Inputday+".";
  var temp;
  var temp2;
   eval("hiddenYear="+Form+Lyear+".value;");
   eval("hiddenMonth="+Form+Lmonth+".value;");
   eval("hiddenDay="+Form+Lday+".value;");
  eval(Form+Year+"options.length=100;");
 for  (i=0;i<100;i++){
  eval(Form+Year+"options[i].text=1950+i;");
  eval(Form+Year+"options[i].value=1950+i;");
  if(eval(Form+Year+"options[i].value")==hiddenYear){
     temp=1;
  }
  }
  if(temp==1){
    eval(Form+Year+"options[hiddenYear-1950].selected=true;");
  }
  eval(Form+Month+"options.length=12");
  for (i=0;i<12;i++){
    eval(Form+Month+"options[i].text=1+i;");
    eval(Form+Month+"options[i].value=1+i;");
    if(eval(Form+Month+"options[i].value")==hiddenMonth){
     temp2=1;
  }
  if(temp2==1){
    eval(Form+Month+"options[hiddenMonth-1].selected=true;");
  }
  }
 //日期判断
 eval("months="+Form+Month+"value;");
 eval("years="+Form+Year+"value;");
   if ("2".indexOf(months) != -1)
   {
   if (years%4==0 && years%100 !=0 ||years%400 ==0 )
   {
   eval(Form+Day+"options.length=29;");
     for (i=0;i<29;i++)
  {
  eval(Form+Day+"options[i].text=i+1;");
  eval(Form+Day+"options[i].value=i+1;");
    if(eval(Form+Day+"options[i].value")==hiddenDay){
          eval(Form+Day+"options[hiddenDay-1].selected=true;");
           }
     }
   }
   else
   {
     eval(Form+Day+"options.length=28;");
     for (i=0;i<28;i++)
  {
      eval(Form+Day+"options[i].text=i+1;");
  eval(Form+Day+"options[i].value=i+1;");
  if(eval(Form+Day+"options[i].value")==hiddenDay){
          eval(Form+Day+"options[hiddenDay-1].selected=true;");
           }
     }
   }
   }
 else if ("135781012".indexOf(months) != -1)
   {
       eval(Form+Day+"options.length=31;");
        for (i=0;i<31;i++)
     {
           eval(Form+Day+"options[i].text=i+1;");
        eval(Form+Day+"options[i].value=i+1;");
        if(eval(Form+Day+"options[i].value")==hiddenDay){
                eval(Form+Day+"options[hiddenDay-1].selected=true;");
           }
   }
   }
   else
    {
      eval(Form+Day+"options.length=30;");
       for (i=0;i<30;i++)
    {
           eval(Form+Day+"options[i].text=i+1;");
        eval(Form+Day+"options[i].value=i+1;");
        if(eval(Form+Day+"options[i].value")==hiddenDay){
              eval(Form+Day+"options[hiddenDay-1].selected=true;");
           }
       }
    }
       
}

//..验证下拉列表框日期的先后顺序函数
function CheckDateOrderForSelect(Inputform,Inputfyear,Inputfmonth,Inputfday,Inputfname,Inputlyear,Inputlmonth,Inputlday,Inputlname){
var Form=Inputform+".";
var Fyear=Inputfyear+".";
var Fmonth=Inputfmonth+".";
var Fday=Inputfday+".";
var Lyear=Inputlyear+".";
var Lmonth=Inputlmonth+".";
var Lday=Inputlday+".";
eval("FyearValue="+Form+Fyear+"value;");
eval("LyearValue="+Form+Lyear+"value;");
eval("FmonthValue="+Form+Fmonth+"value;");
eval("LmonthValue="+Form+Lmonth+"value;");
eval("FdayValue="+Form+Fday+"value;");
eval("LdayValue="+Form+Lday+"value;");
if(parseInt(FmonthValue)<10){
FmonthValue="0"+FmonthValue;
}if(parseInt(LmonthValue)<10){
LmonthValue="0"+LmonthValue;
}if(parseInt(FdayValue)<10){
FdayValue="0"+FdayValue;
}if(parseInt(LdayValue)<10){
LdayValue="0"+LdayValue;
}
if(parseInt(FyearValue+FmonthValue+FdayValue)>parseInt(LyearValue+LmonthValue+LdayValue)){
alert(Inputfname+"不能在"+Inputlname+"之后!");
return false;
}else{
return true;
}
}
//验证文本输入框的日期先后顺序
function CheckDateOrderForInput(Inputform,Inputfdate,Fdatevalue,Inputldate,Ldatevalue){
//.先验证二者是否都是日期,如果不是,返回false
  if (!CheckIsDate(Inputform,Inputfdate,Fdatevalue)) {return false;}
else{
  if (!CheckIsDate(Inputform,Inputldate,Ldatevalue)) {return false;}
  else{
var Form=Inputform+".";
var Fdate=Inputfdate;
var Ldate=Inputldate;
eval("FdateValue="+Form+Fdate+".value;");
eval("LdateValue="+Form+Ldate+".value;");
var fyear=FdateValue.substring(0,4);
var lyear=LdateValue.substring(0,4);
var fmonth=FdateValue.substring(FdateValue.indexOf("-")+1,FdateValue.lastIndexOf("-"));
var lmonth=LdateValue.substring(LdateValue.indexOf("-")+1,LdateValue.lastIndexOf("-"));
var fday=FdateValue.substring(FdateValue.lastIndexOf("-")+1);
var lday=LdateValue.substring(LdateValue.lastIndexOf("-")+1);
if(parseInt(fmonth)<10){
fmonth="0"+fmonth;
}if(parseInt(lmonth)<10){
lmonth="0"+lmonth;
}if(parseInt(fday)<10){
fday="0"+fday;
}if(parseInt(lday)<10){
lday="0"+lday;
}
if(parseInt(fyear+fmonth+fday)>parseInt(lyear+lmonth+lday)){
alert(Fdatevalue+"不能在"+Ldatevalue+"之后!");
eval(Form+Ldate+".className='RedInput';");
        eval(Form+Ldate+".focus();");
return false;
}else{
return true;
}
}

}
}
//判断指定表单中是否有特殊字符的判断.(本处特殊字符验证只是验证了数字,字母以及下划线)
//
function specCharCheck(Inputform,Inputname,Inputvalue){
if (!CheckIsNull(Inputform,Inputname,Inputvalue))return false;
var Form=Inputform+".";
var Name=Inputname;
eval("Value="+Form+Name+".value;");
eval("Len="+Form+Name+".value.length;");
for(var i=0;i<Len;++i)
     {
       tkey=Value.charAt(i);
    var str_val=tkey.charCodeAt(0);
       if(str_val>=48&&str_val<=57||str_val>=65&&str_val<=90||str_val>=97&&str_val<=122||str_val==95)
       {
    }
    else
    {
    alert("提醒您:"+Inputvalue+"只能包含字母,数字或者下划线!");
    eval(Form+Inputname+".className='RedInput';");
       eval(Form+Inputname+".focus();");
    return false;
    }
     }
  return true;
}

//.汉字的判断
//.输入参数  表单名  表单内文本框的名字,文本框的含义
function checkChineseChar(Inputform,Inputname,Inputvalue){
if (!CheckIsNull(Inputform,Inputname,Inputvalue))return false;
var Form=Inputform+".";
var Name=Inputname;
eval("Value="+Form+Name+".value;");
eval("Len="+Form+Name+".value.length;");
for(i=0;i<Len;i++){
char=Value.charCodeAt(i);
if(!(char>255)){
    alert("提醒您:"+Inputvalue+"只能是汉字!");
    eval(Form+Inputname+".className='RedInput';");
    eval(Form+Inputname+".focus();");
return false;
}
}
return true;
}
</script>
<script language="javascript">
//总验证函数
//备注:1.如果一个文本框用到需要校验多次,则可以一个输入框调用多个函数
//      2 .最好要按照文本框的输入顺序进行验证!
function CheckForm(){
//调用是否为空的函数
if(!CheckIsNull("myform","mytxt","用户名")) return false;

//调用长度验证的函数
if(!CheckLength("myform","mytxt","用户名","5","10")) return false;

//调用只验证最大长度的函数
if(!CheckLengthTwo("myform","password","密码","10")) return false;


//调用是否为合法email的函数
if (!CheckIsEmail("myform","email","电子邮件地址")) return false;

//调用验证是否是数字的函数
if (!CheckIsNum("myform","number","数字")) return false;

//调用是否为合法手机号码的函数
if (!CheckIsMobile("myform","mobile","手机号码")) return false;

//验证文本框中输入的是否为日期
if (!CheckIsDate("myform","date","日期")) return false;

//调用验证单选框是否选中
if (!CheckRadio("myform","sex","性别")) return false;

//验证复选框是否被选中
if (!CheckCheckbox("myform","like","爱好")) return false;

//验证下拉列表框是否被选定
if (!CheckSelect("myform","classes","班级")) return false;

//验证下拉列表框时间的先后顺序
if (!CheckDateOrderForSelect("form1","fyear","fmonth","fday","开始日期","lyear","lmonth","lday","结束日期")) return false;

//验证文本输入框时间的先后顺序(该函数首先验证了输入的是否是日期)
if (!CheckDateOrderForInput("form1","fdate","开始日期","ldate","结束日期")) return false;

///特殊字符验证JS
if (!specCharCheck("form1","chartest","特殊字符测试")) return false;

//.汉字判断JS
if(!checkChineseChar("form1","chinesechar","汉字判断测试")) return false;
}

//.获得下拉选择日期的专门调用函数
function gdate(){
//获得下拉列表框日期的回显(暂时不是很好用)
getDateForSelected("form1","year","month","day","hyear","hmonth","hday");
//.显示下拉时间函数
getDateForSelect('form1','year','month','day');
getDateForSelect('form1','fyear','fmonth','fday');
getDateForSelect('form1','lyear','lmonth','lday');
}
</script>
<body onLoad="gdate()">
<form id="form1" name="myform" method="post" action="">
 <p>
  用户 名:
    <input type="text" name="mytxt" />
  <br>
   密  码:
   <input type="password" name="password" />
   <br>
   电子邮件:
   <input name="email" type="text" id="email">
   <br>
   数  字:
    <input name="number" type="text" id="number">
   <br>
  手机号码: <input name="mobile" type="text" id="mobile">
   <br>
   日  期:
   <input name="date" type="text" id="date">
   <br>

性别:
<input type="radio" name="sex" value="man">

<input type="radio" name="sex" value="woman">

   <br>
 爱好:
<input type="checkbox" name="like">1
<input type="checkbox" name="like">2
<input type="checkbox" name="like">3
<input type="checkbox" name="like">4
   <br>
   班级:
   <select name="classes" id="classes">
 <option value="">请选择...</option>
    <option value="1">CP51</option>
    <option value="1">P51</option>
   </select>
   <br>
   <br>
   日期选择:
   <input type="hidden" name="hyear" value="2000">
   <input type="hidden" name="hmonth" value="2">
   <input type="hidden" name="hday" value="2">
   <select name="year" id="year" onchange="gdate()">
   </select>
   <select name="month" id="month" onchange="gdate()">
   </select>
   <select name="day" id="day">
   </select>
  </p>
 <p>开始日期:
   <select name="fyear" id="fyear" onchange="gdate()">
   </select>
   <select name="fmonth" id="fmonth" onchange="gdate()">
   </select>
   <select name="fday" id="fday">
   </select>
    结束日期:
    <select name="lyear" id="lyear" onchange="gdate()">
    </select>
    <select name="lmonth" id="lmonth" onchange="gdate()">
    </select>
    <select name="lday" id="lday">
    </select>
    <br>
  </p>
 <p>开始日期:
   <input name="fdate" type="text" id="fdate" size="20">
   结束日期:
   <input name="ldate" type="text" id="ldate" size="20">
  </p>
 <p>特殊字符测试:
   <input type="text" name="chartest">
 <p>汉字判断测试:
   <input type="text" name="chinesechar">
 <br>
    <input type="submit" name="Submit" value="提交" onClick="return CheckForm()" />
 </p>
</form>
</body>
</html>

posted @ 2006-12-19 10:01  '.Elvis.'  阅读(1575)  评论(0)    收藏  举报