你那输入框里是含有'YYYY-MM-DD'格式的日期字符还是只有日期?

解决方案 »

  1.   

    <script language=javascript>
    function check()
    {
    var s=form1.t1.value;
    var re=/^[1-9]\d{3}(?:\-|\/)(0[1-9]|1[0-9])(?:\-|\/)(0[1-9]|[1-2][0-9]|[3][0-1])$/;
    if(!re.test(s))
    {
    alert("输入的日期格式错误,请重新输入\n格式为:YYYY-MM-DD或YYYY/MM/DD");
    }}
    </script>
    <form name=form1>
    <input name="t1" >
    <input value=test type=button onclick=check()></form>
      

  2.   

    <script language="javascript">
    String.prototype.IsDate=function()
    {
    var str=this;
        var reg =/^(\d+)-(\d{1,2})-(\d{1,2})$/;    
        var r=str.match(reg);    
        if(r==null)return false;    
        r[2]=r[2]-1;    
        var d=new Date(r[1],r[2],r[3]);    
        if(d.getFullYear()!=r[1])return false;    
        if(d.getMonth()!=r[2])return false;    
        if(d.getDate()!=r[3])return false;    
        return true;  
    }/*用法:
    if (document.all[yourvalue].value.IsDate)
    {
    alert('is date');
    }
    */
    </script>
      

  3.   

    楼上两位的意思我明白,但是问题是,怎么提交?
    <type=button>
    虽然判断了,但是这个不能提交数据啊
      

  4.   

    这样更最好!
    <script language=javascript>
    String.prototype.IsDate=function()
    {
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/; 
        var matchArray = dateStr.match(datePat); // is the format ok?     if (matchArray == null) { 
            return false; 
        }     month = matchArray[1]; // parse date into variables 
        day = matchArray[3]; 
        year = matchArray[5];     if (month < 1 || month > 12) { // check month range 
            return false; 
        }     if (day < 1 || day > 31) { 
            return false; 
        }     if ((month==4 || month==6 || month==9 || month==11) && day==31) { 
            return false; 
        }     if (month == 2) { // check for february 29th 
            var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); 
            if (day > 29 || (day==29 && !isleap)) { 
                return false; 
            } 
        } 
        return true; 
    }
    function check()
    {
     if(!form1.t1.value.IsDate)
     {
      alert("输入的日期型数据有错\n请重新输入\n格式为:MM-DD-YYYY或MM/DD/YYYY"
      return false;
     }
     //在这里还可以做其它的检测 form1.submit();//最后无错后提交
    }</script><form name=form1>
    <input name="t1" >
    <input value=test type=button onclick=check()></form>
      

  5.   

    上面的代码有点问题,下面的代码测试过
    <script language=javascript>
    String.prototype.IsDate=function()
    {
    var dateStr=this;
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/; 
        var matchArray = dateStr.match(datePat); // is the format ok?     if (matchArray == null) { 
            return false; 
        }     month = matchArray[1]; // parse date into variables 
        day = matchArray[3]; 
        year = matchArray[5];     if (month < 1 || month > 12) { // check month range 
            return false; 
        }     if (day < 1 || day > 31) { 
            return false; 
        }     if ((month==4 || month==6 || month==9 || month==11) && day==31) { 
            return false; 
        }     if (month == 2) { // check for february 29th 
            var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); 
            if (day > 29 || (day==29 && !isleap)) { 
                return false; 
            } 
        } 
        return true; 
    }
    function check()
    { if(!form1.t1.value.IsDate())
     {
      alert("输入的日期型数据有错\n请重新输入\n格式为:MM-DD-YYYY或MM/DD/YYYY")
      return false;
     }
    //  在这里还可以做其它的检测 form1.submit();//最后无错后提交
    }</script><form name=form1>
    <input name="t1" >
    <input value=test type=button onclick=check()></form>
      

  6.   

    谢谢楼上各位。
    刚刚发现除了用Javascript验证,还可以在asp内用IsDate()函数用可以搞定,更简单。
    再次谢谢各位。