<script language=javascript>
function strDateTime(str)
{
   var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; 
   var r = str.match(reg); 
   if(r==null)return false; 
   var d= new Date(r[1], r[3]-1,r[4]); 
   var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
   return newStr==str
}
alert(strDateTime("2002-1-31"))
alert(strDateTime("2002-1-41"))
</script>

解决方案 »

  1.   

    <input type="text" name="date1" value="2002-02-31" onblur="check(this)">
    <script>
    function check(obj){
    if(strDate(obj.value)==false){alert('Error');obj.select();};
    }
    function strDate(str){
    var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; 
    var r = str.match(reg); 
    if(r==null)return false; 
    var d= new Date(r[1], r[3]-1,r[4]); 
    if(r[1]!=d.getFullYear())return false;
    if(r[3]!=(d.getMonth()+1))return false;
    if(r[4]!=d.getDate())return false;
    return true;
    }
    </script>
      

  2.   

    //下面是我用的函数,你试试吧
    function isDate(datestr)
    {
    var myDatestr = datestr+"";
    var aryDate  = myDatestr.split('-');
    if (aryDate.length!=3) return false; 
    var myYear  = parseInt(aryDate[0]);
    var myMonth = parseInt(aryDate[1]);
    var myDay   = parseInt(aryDate[2]);
    if ((aryDate[0].length!=4)||(aryDate[1].length>2)||(aryDate[2].length>2)) return false;
    if ((aryDate[1].length<1)||(aryDate[2].length<1)) return false;
    if (isNaN(myYear)||isNaN(myMonth)||isNaN(myDay)) return false;
    if ((myMonth>12)||(myMonth<1))   return false;
    if (Date_getDay(myYear,myMonth)<myDay) return false; return true;
    }
      

  3.   

    //还有:
    function Date_getDay(inYear,inMonth)
    {
    var aryDay = [0,31,28,31,30,31,30,31,31,30,31,30,31];
    if (inYear%4==0) aryDay[2] = 29;//&acute;&Euml;&acute;&brvbar;&Icirc;&ordf;&Egrave;ò&Auml;ê&micro;&Auml;&Aring;&ETH;&para;&Iuml;
    return aryDay[inMonth];
    }
      

  4.   

    多谢各位大位,!小弟是搞JAVA开发的,SCRIPT比较弱,以后还请多多关照.