<script language=javascript>
function strDateTime(str)
{
   var r = str.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(strDateTime("2002-01-31"));
alert(strDateTime("2002-01-41"));
</script>

解决方案 »

  1.   

    谢谢meizz
    上次是通过正则表达式验证。很经典!
      

  2.   

    这是我自已写的一个函数,虽然代码比较长,但是比梅花雪(新婚蜜月中)的功能全面function isdate(datestr) {
    var endvalue;
    endvalue=true;
    datestr=new String(datestr);
    if (datestr.lastIndexOf("-")==-1 && datestr.lastIndexOf("年")==-1 && datestr.lastIndexOf("\/")==-1 && datestr.lastIndexOf(".")==-1) {
    endvalue=false;
    } else {
    if (datestr.length>11) {
    endvalue=false;
    } else {
    allowstrlist="1234567890-.年月/日";
    for (i=0;i<datestr.length;i++) {
    if (allowstrlist.indexOf(datestr.substr(i,1))==-1) {
    endvalue=false;
    break;
    }
    }
    var labcount,labvalue;
    labcount=0;
    labvalue="";

    allowlablist="年月/日-.";
    for (i=0;i<datestr.length;i++) {
    if (allowlablist.indexOf(datestr.substr(i,1))!=-1) {
    tmpvalue=allowlablist.substr(allowlablist.indexOf(datestr.substr(i,1)),1);
    if (labvalue=="" || (labcount!=0 && labvalue!=tmpvalue)) {
    labcount=labcount+1;
    }
    labvalue=tmpvalue;
    }
    }
    if (labcount>1) {
    if (tmpvalue!="月" && tmpvalue!="年" && tmpvalue!="日") {
    endvalue=false;
    } else {
    if (datestr.lastIndexOf("年")==-1 || datestr.lastIndexOf("月")==-1 || datestr.lastIndexOf("日")==-1) {
    endvalue=false;
    }
    }
    }
    if (endvalue) {
    if (labvalue=="月" || labvalue=="日") {
    labvalue="年";
    }
    tmpvalue=datestr.substring(0,datestr.indexOf(labvalue));
    if (tmpvalue.length>4) {
    endvalue=false;
    } else {
    tmpposition=datestr.indexOf(labvalue)+1;
    if (labvalue=="年") {
    labvalue="月";
    }
    tmpvalue=datestr.substring(tmpposition,datestr.indexOf(labvalue,tmpposition));
    if (tmpvalue.length>2) {
    endvalue=false;
    } else {
    if (tmpvalue>12) {
    endvalue=false;
    } else {
    tmpposition=datestr.indexOf(labvalue,tmpposition)+1;
    if (labvalue=="月") {
    labvalue="日";
    tmpvalue=datestr.substring(tmpposition,datestr.indexOf(labvalue,tmpposition));
    } else {
    tmpvalue=datestr.substr(tmpposition);
    }
    if (tmpvalue.length>2) {
    endvalue=false;
    } else {
    if (tmpvalue>31) {
    endvalue=false;
    }
    }
    }
    }
    }
    }
    }
    }
    return(endvalue);
    }
      

  3.   

    <input type="text" name="abc" onchange="vbscript:msgbox(isdate(document.abc.value))">