换个思路
用select代替text输入
这样就不用验证了
而且一般做法都是这样

解决方案 »

  1.   

    用日期控件会比较方便,
    http://blog.csdn.net/meizz/archive/2003/06/09/17130.aspx
      

  2.   

    <script language=javascript>
    String.prototype.isDate = 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-01-31".isDate());
    alert("2002-01-41".isDate());
    </script>
      

  3.   

    感谢楼上提供日历的小伙,但我们现在不想用日历,想用手输入,这样作主要是为了保证输入速度
    :)如果不能严格限制
    能否先写一个比较宽松的限制?
    比如
    yyyy-mm-dd
    年份的限制 为1xxx或2xxx 年
    月份的限制为  01~12
    日期的限制为  01~31 
    年月日 之间用"-" 连接
    这样应该比较简单了哦:)
      

  4.   

    <script type="text/javascript">
    // 
    function IsDate(s) {
    var re = /^(\d{4})(\/|-)(\d{1,2})\2(\d{1,2})$/
    var m = re.exec(s);
    if (m == null) return false;
    var d = new Date(m[1],m[3]-1,m[4]);
    return d.getFullYear()==m[1] && d.getMonth()==(m[3]-1) && d.getDate()==m[4];
    }
    alert(IsDate("2005-2-28"))
    </script>
      

  5.   


    太经典了!3ks  again
      

  6.   

    var d = new Date(m[1],m[3]-1,m[4]);
    return d.getFullYear()==m[1] && d.getMonth()==(m[3]-1) && d.getDate()==m[4];
    ------------------------------
    这都能想出来
    哈哈