首先確定日期格式,如mm-dd-yy
先用正規表達式驗証格式是否正確
提出年月日做比較是否正確

解决方案 »

  1.   

    检查日期的合法性:
    function isDate(checktext){
    var datetime;
    var year,month,day;
    var gone,gtwo;
    if(Trim(checktext.value)!=""){
     datetime=Trim(checktext.value);
     if(datetime.length==10){
      year=datetime.substring(0,4);
      if(isNaN(year)==true){
       alert("请输入日期!格式为(yyyy-mm-dd) \n例(2001-01-01)!");
       checktext.focus();
       return false;
      }
      gone=datetime.substring(4,5);
      month=datetime.substring(5,7);
      if(isNaN(month)==true){
       alert("请输入日期!格式为(yyyy-mm-dd) \n例(2001-01-01)!");
       checktext.focus();
       return false;
      }
      gtwo=datetime.substring(7,8);
      day=datetime.substring(8,10);
      if(isNaN(day)==true){
       alert("请输入日期!格式为(yyyy-mm-dd) \n例(2001-01-01)!");
       checktext.focus();
       return false;
      }
      if((gone=="-")&&(gtwo=="-")){
       if(month<1||month>12) { 
        alert("月份必须在01和12之间!"); 
        checktext.focus();
        return false; 
        } 
       if(day<1||day>31){ 
        alert("日期必须在01和31之间!");
        checktext.focus(); 
        return false; 
       }else{
        if(month==2){  
         if(isLeapYear(year)&&day>29){ 
           alert("二月份日期必须在01到29之间!"); 
           checktext.focus();
           return false; 
         }       
         if(!isLeapYear(year)&&day>28){ 
           alert("二月份日期必须在01到28之间!");
           checktext.focus(); 
           return false; 
         } 
        } 
        if((month==4||month==6||month==9||month==11)&&(day>30)){ 
         alert("在四,六,九,十一月份 \n日期必须在01到30之间!");
         checktext.focus(); 
         return false; 
        } 
       }
      }else{
       alert("请输入日期!格式为(yyyy-mm-dd) \n例(2001-01-01)");
       checktext.focus();
       return false;
      }
     }else{
      alert("请输入日期!格式为(yyyy-mm-dd) \n例(2001-01-01)");
      checktext.focus();
      return false;
     }
    }else{
     return true;
    }
    return true;
    }
    </script>
    呵呵..来拿分了!!
      

  2.   

    只对IE的话,下面这个最简单:<script language="JavaScript">
    function isDate(str){
    if(!str.match(/^\d{4}\-\d\d?\-\d\d?$/)){return false;}
    //str=str.replace(/[^\d \:\-]+/g,"");
    window.tmp=false;
    window.execScript('tmp=IsDate("' + str + '")', "vbs");
    return tmp;
    }
    document.write(isDate("2005-02-28")); //true
    document.write(isDate("2005-02-29")); //false
    </script>
      

  3.   

    下面这个则是通用的。<script language="JavaScript">
    function isDate2(str){
    if(!str.match(/^\d{4}\-\d\d?\-\d\d?$/)){return false;}
    var ar=str.replace(/\-0/g,"-").split("-");
    ar=new Array(parseInt(ar[0]),parseInt(ar[1])-1,parseInt(ar[2]));
    var d=new Date(ar[0],ar[1],ar[2]);
    return d.getFullYear()==ar[0] && d.getMonth()==ar[1] && d.getDate()==ar[2];
    }
    document.write(isDate2("2005-02-28")); //true
    document.write(isDate2("2005-02-29")); //false
    </script>
      

  4.   

    下面这个则是通用的。<script language="JavaScript">
    function isDate(str){
    if(!str.match(/^\d{4}\-\d\d?\-\d\d?$/)){return false;}
    var ar=str.replace(/\-0/g,"-").split("-");
    ar=new Array(parseInt(ar[0]),parseInt(ar[1])-1,parseInt(ar[2]));
    var d=new Date(ar[0],ar[1],ar[2]);
    return d.getFullYear()==ar[0] && d.getMonth()==ar[1] && d.getDate()==ar[2];
    }
    document.write(isDate("2005-02-28")); //true
    document.write(isDate("2005-02-29")); //false
    </script>