写一段Java Script程序对以下程序的用户输入日期的有效性进行判断,如果格式错误就提示用户。在程序的恰当位置注明怎样调用你的程序。日期格式为:年年年年月月天天小时,例如 2003010812。请在下面的程序中写入javascript代码
<html>
<head>
<title>NewPage1</title>
</head>
<body>
<form method="POST"  action="">  <p>查询日期(yyyymmddhh):<br>
   从<input type="text"  name="DateFrom" size="20"><br>
   到<input type="text"  name="DateTo" size="20"></p><p>
</form>
</body>
</html>thanks

解决方案 »

  1.   

    选择时间:<input editable="false" name="StartTime" id="StartTime" style="width: 150px"
                class="easyui-datebox" type="text" /><span style="margin: 2px">至</span>
            <input name="EndTime" id="EndTime" editable="false" style="width: 150px" class="easyui-datebox" type="text" />在easyui里有日历控件,你单纯用文本框的话,验证起来忒麻烦了
      

  2.   

    function IsValidDate(DateStr)   
    {   
        var sDate=DateStr.replace(/(^\s+|\s+$)/g,''); //去两边空格;   
        if(sDate=='') return true;   
        //如果格式满足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为''   
        //数据库中,合法日期可以是:YYYY-MM/DD(2003-3/21),数据库会自动转换为YYYY-MM-DD格式   
        var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,'');   
        if (s=='') //说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D   
        {   
            var t=new Date(sDate.replace(/\-/g,'/'));   
            var ar = sDate.split(/[-/:]/);   
            if(ar[0] != t.getYear() || ar[1] != t.getMonth()+1 || ar[2] != t.getDate())   
            {   
                //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');   
                return false;   
            }   
        }   
        else   
        {   
            //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');   
            return false;   
        }   
        return true;   
    }   
      

  3.   

    <form method="POST"  action="">  <p>查询日期(yyyymmddhh):<br>
        从<input type="text"  name="DateFrom" size="20" onblur="fun(this)"><br>
        到<input type="text"  name="DateTo" size="20" onblur="fun(this)"></p><p>
    </form>
    <script type="text/javascript">
        function fun(obj){
            if(!isDate(obj.value)){
                alert("日期格式错误!");
                obj.value="";
            }
        }
        function isDate(str){
            var reg = /^(\d{4})(\d{2})(\d{2})(\d{2})$/;
            var result = str.match(reg);
            if(result == null||parseFloat(result[4])>23)return false;
            var t=result[1]+","+parseFloat(result[2])+","+parseFloat(result[3]);
            var d = new Date(result[1],result[2]-1,result[3]);
            var newStr = d.getFullYear()+","+parseFloat(d.getMonth()+1)+","+parseFloat(d.getDate());
            return t == newStr;
        }
    </script>
      

  4.   

    3楼的
    var reg = /^(\d{4})(\d{2})(\d{2})(\d{2})$/;
            var result = str.match(reg);
    这些是什么意思呢,能解释下吗,
      

  5.   

    var reg = /^(\d{4})(\d{2})(\d{2})(\d{2})$/;这是正侧意思是字符串必须是10个数字组成,并且把它们分割成4组,因为要用match去匹配并提取成result[1] result[2] result[3] result[4] 分别判断。
    result[1]+result[2]+result[3] 必须是正确的年月日格式
    result[4]必须是小于24的数