function validateDate(fld) {
    if (!checkDate(fld)) {
        // focus if validation fails
        fld.focus( );
        fld.select( );
    }
}
function checkDate(fld) {
    var mo, day, yr;
    var entry = fld.value;
    var re = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/;
    if (re.test(entry)) {
        var delimChar = (entry.indexOf("/") != -1) ? "/" : "-";
        var delim1 = entry.indexOf(delimChar);
        var delim2 = entry.lastIndexOf(delimChar);
        mo = parseInt(entry.substring(0, delim1), 10);
        day = parseInt(entry.substring(delim1+1, delim2), 10);
        yr = parseInt(entry.substring(delim2+1), 10);
        var testDate = new Date(yr, mo-1, day);
        alert(testDate)
        if (testDate.getDate( ) == day) {
            if (testDate.getMonth( ) + 1 == mo) {
                if (testDate.getFullYear( ) == yr) {
                    return true;
                } else {
                    alert("There is a problem with the year entry.");
                }
            } else {
                alert("There is a problem with the month entry.");
            }
        } else {
            alert("There is a problem with the date entry.");
        }
    } else {
        alert("Incorrect date format. Enter as mm/dd/yyyy.");
    }
    return false;
}
楼主参考一下吧....用到了正则表达式..

解决方案 »

  1.   

    csdn meizz(梅花雪)的方法,判断日期时间是否有效:<script language=javascript>
    String.prototype.isTime = function()
    {
      var r = this.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/); 
      if(r==null)return false; var d = new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
      return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
    }
    alert("2002-1-31 12:34:56".isTime());
    alert("2001-2-29 12:54:56".isTime());
    alert("2002-1-41 12:00:00".isTime());
    </script>
      

  2.   

    this.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/); 
    能不能给个解释
      

  3.   

    String.prototype.isTime = function()
    {
      var r = this.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]); 
      return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
    }
    为什么我用
    alert("2002-1-1".isTime);返回的是true
    而我用  
    alert(document.getElementById('d').value.isTime());返回的却是false
    其中<input id="d" type="text"></input>
      

  4.   

    String.prototype.isTime = function()
    {
      var r = this.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]); 
      return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
    }function doClick1(){
    alert(document.getElementById('d').value);
    alert(document.getElementById('d').value.isTime());
    }<br>
    <input id="d" type="text"></input>
    <input type="button" value="time" onclick="doClick1();">
    可以的