function isIdCardNo(num)
{
        if (isNaN(num)) {alert("输入的不是数字!"); return false;}
        var len = num.length, re;
        if (len == 15)
          re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
        else if (len == 18)
          re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
        else {alert("输入的数字位数不对!"); return false;}
        var a = num.match(re);
        if (a != null)
        {
          if (len==15)
          {
            var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
            var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
          }
          else
          {
            var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
            var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
          }
          if (!B)
          {
   alert("输入的身份证号 "+ a[0] +" 里出生日期不对!");
    return false;
    }else
    {
    return true;
    }
        }
       
}


function fob(n, d)
{
   var p,i,x;if(!d) d=document;
   if((p=n.indexOf("?"))>0&&parent.frames.length)
   {
       d=parent.frames[n.substring(p+1)].document;
       n=n.substring(0,p);
   }
   if(!(x=d[n])&&d.all)
   x=d.all[n];
   for (i=0;!x&&i<d.forms.length;i++)
   x=d.forms[i][n];
   for(i=0;!x&&d.layers&&i<d.layers.length;i++)
   x=fob(n,d.layers[i].document);
   return x;
}    

function cb()
{
   var a=cb.arguments;
   var name=fob(a[0]);
   e=document.forms(0).elements;
   if (name.checked==true)
   {
      for (i=0;i<e.length;i++)
      {
         e[i].checked=true;
      }
   }
   else
   {
      for (i=0;i<e.length;i++)
      {
         e[i].checked=false;
      }
   }
}

function vdf()
{
   var i,j,name,value,message,length,type,a=vdf.arguments,cb_name;
   for (i=0; i<(a.length-2); i+=3)
   {
       if (a[i].indexOf('#')!=-1)
       {
           name=fob(a[i].substr(0,a[i].indexOf('#')));
           cb_name=fob(a[i].substr((a[i].indexOf('#')+1),a[i].length));
       }
       else
       {
          name=fob(a[i]); // 控件名称
       }
       message=a[i+1]; // 提示信息
       type=a[i+2]; // 类型
       if (type!="r_time")
       {
          value=name.value.replace(/ +/g, ""); // 控件值
       }
       else
       {
          value=name.value;
       }
  
       if (name)
       {
         
       // ===============判断复选框是否选中================ //
          if (type=="r_cb")
          {     
             e=document.forms(0).elements;
             var flag=false;
             for (i=0;i<e.length;i++)
             {
                if (e[i]!=cb_name)
                {
                   if (e[i].checked==true)
                   {
                       flag=true;
                       break;
                   }
                }
                if (i==e.length-1)
                {
                    break;
                }
             }
             if (flag==false)
             {
                alert(message+"!\n"); //为空时出现的提示
                return false;
             }
          }
         
          // ===============判断下拉框是否选择================ //
          if (type=="r_sl")
          {
            if (name.selected==false)
            {
                 alert(message+"!\n"); //为空时出现的提示
                 return false;
            }
          }
         
          // ===============不能为空的判断================ //
          if (type=="r")
          {
             if (value=="") // 判断是否为空
             {
                 alert(message+"!\n"); //为空时出现的提示
                 name.focus();
                 name.select();
                 return false;
             }
          }
       
          // ===============不能为空的判断,但不获得焦点================ //
          if (type=="o_r")
          {
             if (value=="") // 判断是否为空
             {
                 alert(message+"!\n"); //为空时出现的提示
                 return false;
             }
          }
         // ===============只能输入中文================ //
         if (type=="r_china")
         {
             if (value.search(/^[\u4e00-\u9fa5]+$/)==-1)
             {
                  alert(message+"!\n"); // 判断不能为空
                  name.focus();
                  name.select();
                  return false;
             }
         }
        
         // ===============只能输入数字或者字母================ //
         if (type=="r_num_char")
         {
             if (value=="")
             {
                  alert(message+"!\n"); //为空时出现的提示
                 name.focus();
                 name.select();
                 return false;
             }
             if (value.search(/^[0-9a-zA-Z]+$/)==-1)
             {
                  alert(message+"!\n"); //为空时出现的提示
                 name.focus();
                 name.select();
                 return false;
             }
          }
         
          // ===============可以为空,不为空时,填数字================ //
         if (type=="num")
         {
             if (value.search(/^[0-9]+$/)==-1 && value!="")
             {
                  alert(message+"!\n"); // 判断不能为空
                  name.focus();
                  name.select();
                  return false;
             }
         }
        
         // ===============只能输入数字(非负浮点数)================ //
         if (type=="r_num")
         {
             if (value=="")
             {
                  alert(message+"!\n");
                  name.focus();
                 name.select();
                  return false;
             }
             if (value.search(/^((0)|([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$/)==-1)
             {
                  alert(message+"!\n"); // 判断不能为空
                  name.focus();
                 name.select();
                  return false;
             }
          }
           // ===============只能输入整数================ //
         if (type=="r_num_zs")
         {
            
             if (value.search(/^[0]*[0-9]*[1-9][0-9]*$/)==-1)
             {
                  alert(message+"!\n"); // 判断不能为空
                  name.focus();
                 name.select();
                  return false;
             }
          }
         
          // ===============只能输入小于等于n位长度数字================ //
          if (type.indexOf("r_num<")!=-1)
          {
              length=type.substring((type.indexOf('<')+1),type.length); // 获得rn<后面的数
  
              if (value=="") // 为空做的提示
              {
                  alert(message+"!\n");
                  name.focus();
                  name.select();
                  return false;
              }
              if (value.search(/^[0-9]+$/)==-1)  // 不是数字做的提示
              {
                  alert(message+"!\n");
                  name.focus();
                  name.select();
                  return false;
              }
              if (value.length>length)  // 限制数字长度做的限制
              {
                 alert(message+"!\n");
                 name.focus();
                 name.select();
                 return false;
              }
          }
         
          // ===============只能输入大于等于n位长度数字================ //
          if (type.indexOf("r_num>")!=-1)
          {
          length=type.substring((type.indexOf('>')+1),type.length); // 获得rn>后面的数
  
              if (value=="") // 为空做的提示
              {
                  alert(message+"!\n");
                  name.focus();
                  name.select();
                  return false;
              }
              if (value.search(/^[0-9]+$/)==-1)  // 不是数字做的提示
              {
                  alert(message+"!\n");
                  name.focus();
                  name.select();
                  return false;
              }
              if (value.length<length)  // 限制数字长度做的限制
              {
                 alert(message+"!\n");
                 name.focus();
                 name.select();
                 return false;
              }
          }
         
          // ===============必须输入a-b位之间的数字================ //   
       if (type.indexOf("r_num#<>")!=-1)
       {
              length=type.substr((type.indexOf('>')+1),type.length);
              length=length.substr(0,length.lastIndexOf("-"));
           length1=type.substring((type.indexOf('-')+1),type.length) // 获得rn<后面的数
          
              if (value=="") // 为空做的提示
           {
           alert(message+"!\n");
           name.focus();
     name.select();
     return false;
     }
     if (value.search(/^[0-9]+$/)==-1) // 不是数字做的提示
     {
     alert(message+"!\n");
     name.focus();
     name.select();
     return false;
     }
    
     if (value.length<length || value.length>length1)  // 限制数字长度做的限制
     {
     alert(message+"!\n");
     name.focus();
     name.select();
     return false;
     }
    }
   
    // ===============判断email,不一定输入================ // 
       if (type.indexOf("email")!=-1)
       {
          if (name.value!="")
          {
              if (value.search(/^[_\.a-z0-9]+@[a-z0-9]+[\.][a-z0-9]{2,}$/i)==-1)
           {
               alert(message+"!\n");
                name.focus();
               name.select();
               return false;
           }
           }
          
        }
        // ===============判断身份证号,不一定输入================ // 
       if (type.indexOf("card")!=-1)
       {
          if (name.value!="")
          {
    if(!isIdCardNo(value))
    {
     // alert(message+"!\n");
                name.focus();
               name.select();
               return false;
    }
     
           }
          
        }
  
          // ===============判断password,不一定输入================ // 
       if (type.indexOf("password")!=-1)
       {
          if (name.value!="")
          {
              if (value.search(/^(\w){6,20}$/i)==-1)
           {
               alert(message+"!\n");
                name.focus();
               name.select();
               return false;
           }
           }
           if (value=="") // 为空做的提示
           {
           alert(message+"!\n");
           name.focus();
     name.select();
     return false;
     }
        }
  
        // ===============判断email,一定输入================ //
   if (type.indexOf("r_email")!=-1)
   {
    if (name.value=="")
    {
    alert(message+"!\n");
    name.focus();
    name.select();
    return false;
    }
    if (value.search(/^[_\.a-z0-9]+@[a-z0-9]+[\.][a-z0-9]{2,}$/i)==-1)
    {
    alert(message+"!\n");
             name.focus();
    name.select();
    return false;
    }
   }
  
    // ===============判断日期,比如2000-12-20================ //
          if (type=="r_date")
          {
              flag=true;
              getdate=value;        
              if (getdate.search(/^[0-9]{4}-(0[1-9]|[1-9]|1[0-2])-((0[1-9]|[1-9])|1[0-9]|2[0-9]|3[0-1])$/)==-1) // 判断输入格式时候正确
              {
                   flag=false;
               }
               else
               {
                    var year=getdate.substr(0,getdate.indexOf('-'))  // 获得年
                    // 下面操作获得月份
     var transition_month=getdate.substr(0,getdate.lastIndexOf('-'));
     var month=transition_month.substr(transition_month.lastIndexOf('-')+1,transition_month.length);
     if (month.indexOf('0')==0)
     {
     month=month.substr(1,month.length);
     }
     // 下面操作获得日期
     var day=getdate.substr(getdate.lastIndexOf('-')+1,getdate.length);
     if (day.indexOf('0')==0)
     {
     day=day.substr(1,day.length);
     }
     //alert(month);
     //alert(day)
     //return false;
                    if ((month==4 || month==6 || month==9 || month==11) && (day>30)) // 4,6,9,11月份日期不能超过30
                    {
                    flag=false;
                     }
     if (month==2)  // 判断2月份
     {
      if (LeapYear(year))
      {
       if (day>29 || day<1){ flag=false; }
      }
      else
      {
       if (day>28 || day<1){flag=false; }
      }
     }
     else
     {
     flag=true;
     }
      }
          if (flag==false)
          {
              alert(message+"!\n"); //为空时出现的提示
              name.focus();
              name.select();
              return false;
          }
        }
       
       
        // ===============判断日期,比如2000-12-20================ //
          if (type=="r_time")
          {
              flag=true;
              getdate=value;
              if (getdate.search(/^[0-9]{4}-(0[1-9]|[1-9]|1[0-2])-((0[1-9]|[1-9])|1[0-9]|2[0-9]|3[0-1]) ((0[1-9]|[1-9])|1[0-9]|2[0-4]):((0[1-9]|[1-9])|[1-5][0-9]):((0[1-9]|[1-9])|[1-5][0-9])$/)==-1) // 判断输入格式时候正确
              {
                   flag=false;
               }
               else
               {
                    var year=getdate.substr(0,getdate.indexOf('-'))  // 获得年
                    // 下面操作获得月份
     var transition_month=getdate.substr(0,getdate.lastIndexOf('-'));
     var month=transition_month.substr(transition_month.lastIndexOf('-')+1,transition_month.length);
     if (month.indexOf('0')==0)
     {
     month=month.substr(1,month.length);
     }
     // 下面操作获得日期
     var day=getdate.substr(getdate.lastIndexOf('-')+1,getdate.length);
     if (day.indexOf('0')==0)
     {
     day=day.substr(1,day.length);
     }
                    if ((month==4 || month==6 || month==9 || month==11) && (day>30)) // 4,6,9,11月份日期不能超过30
                    {
                        flag=false;
                     }
     if (month==2)  // 判断2月份
     {
      if (LeapYear(year))
      {
       if (day>29 || day<1){ flag=false; }
      }
      else
      {
       if (day>28 || day<1){flag=false; }
      }
     }
     else
     {
     flag=true;
     }
      }
          if (flag==false)
          {
              alert(message+"!\n"); //为空时出现的提示
              name.focus();
              name.select();
              return false;
          }
        }
        //判断是否闰年
//参数  intYear 代表年份的值
//return true: 是闰年 false: 不是闰年
function LeapYear(intYear) {
 if (intYear % 100 == 0)
 {
  if (intYear % 400 == 0) { return true; }
 }
 else {
  if ((intYear % 4) == 0) { return true; }
 }
 return false;
}

      // ===============判断电话,可以为空================ //
   if (type.indexOf("tel")!=-1)
   {
      if (name.value!="")
      {
                 if (value.search(/^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{8}$/)==-1 && value.search(/^(\([0-9]{4}\)|[0-9]{4}-)[0-9]{7}$/)==-1)
   {
      alert(message+"!\n");
               name.focus();
      name.select();
      return false;
    }
      }
   }
  
   // ===============判断电话,不能为空================ //
   if (type.indexOf("r_tel")!=-1)
   {
      if (name.value=="")
      {
      alert(message+"!\n");
      name.focus();
      name.select();
      return false;
      }
      if (value.search(/^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{8}$/)==-1 && value.search(/^(\([0-9]{4}\)|[0-9]{4}-)[0-9]{7}$/)==-1)
      {
         alert(message+"!\n");
          name.focus();
      name.select();
      return false;
      }
   }
  
  
   // ===============判断手机,可以为空================ //
   if (type.indexOf("mod")!=-1)
   {
      if (name.value!="")
      {
                if (value.search(/^[0-9]{11}$/)==-1)
  {
     alert(message+"!\n");
              name.focus();
     name.select();
     return false;
  }
      }
    }
   
    // ===============判断手机,不能为空================ //
    if (type.indexOf("r_mod")!=-1)
    {
       if (name.value=="")
       {
    alert(message+"!\n");
    name.focus();
    name.select();
    return false;
        }
       if (value.search(/^[0-9]{11}$/)==-1)
       {
   alert(message+"!\n");
            name.focus();
   name.select();
   return false;
        }
    }
   
     // ===============判断电话和手机,不能为空================ //
   if (type.indexOf("r_tel_mod")!=-1)
   {
      if (name.value=="")
      {
      alert(message+"!\n");
      name.focus();
      name.select();
      return false;
      }
      if (value.search((/^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{8}$/)==-1 && value.search(/^(\([0-9]{4}\)|[0-9]{4}-)[0-9]{7}$/)==-1) || value.search(/^[0-9]{11}$/)==-1)
      {
         alert(message+"!\n");
          name.focus();
      name.select();
      return false;
      }
    
   }
  
   
    // ===============判断街道================ //
    if (type.indexOf("city")!=-1)
    {
       if (name.value!="")
       {
              if (value.search(/^.{1,}(市|镇|乡).{1,}(路|街|道).{1,}号.{0,}$/)==-1)
   {
       alert(message+"!\n");
                name.focus();
       name.select();
       return false;
    }
        }
    }
   
    // ===============判断街道,不能为空================ //
    if (type.indexOf("r_city")!=-1)
    {

        if (name.value=="")
        {
    alert(message+"!\n");
    name.focus();
    name.select();
    return false;
        }

        if (value.search(/^.{1,}(市|镇|乡).{1,}(路|街|道).{1,}号.{0,}$/)==-1)
        {
    alert(message+"!\n");
             name.focus();
    name.select();
    return false;
        }
    }
        }
    }
}

posted on 2007-11-21 15:03  flyluo  阅读(189)  评论(0编辑  收藏  举报