//校验日期的函数
//在最终校验时使用
//source 校验的字符窜
function checkDate(source) {
var str = source;
if (str.length == 0) return true;

var arList = str.split("-")
if (arList.length != 3){ return false; }

var iYear = parseInt(arList[0],10);
var iMonth = parseInt(arList[1],10);
var iDay = parseInt(arList[2],10);

if(isNaN(iYear) || isNaN(iMonth) || isNaN(iDay)) {return false;}

if (iYear<1900 || iYear>2099){ return false; }

if (iMonth>12 || iMonth<1){ return false; }

if ((iMonth==1 || iMonth==3 || iMonth==5 || iMonth==7 || iMonth==8 || iMonth==10 || iMonth==12) && (iDay>31 || iDay<1)){ return false; }

if ((iMonth==4 || iMonth==6 || iMonth==9 || iMonth==11) && (iDay>30 || iDay<1)){ return false; }

if (iMonth==2){
if (LeapYear(iYear)){
if (iDay>29 || iDay<1){ return false; }
}
else{
if (iDay>28 || iDay<1){ return false; }
}
}
return true;
}//判断是否闰年
//参数 intYear 代表年份的值
//return true: 是闰年 false: 不是闰年
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}

解决方案 »

  1.   

    用vbscript的isdate()函数,也可以的呀!好方便的!!!
      

  2.   

    <input onblur="checkDateInput(this);">测试用例:2002.3.6 2002.2.29 2002.2.36 fdsa
    <script>function checkDateInput(obj)  //用于检查日期输入是否正确 (日期输入范围为1930-01-01 到2200-12-31)
    {
    if (obj.value.length==0) return false;
    var objValue=obj.value.replace(/[-\.]/g,"/");
    var a=new Date(objValue);
    if (isNaN(a))
    {
    obj.value="";
    alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进处了清除。");
    obj.focus();
    return false;
    }
    var b;
    if (a.getFullYear()<1900||a.getFullYear()>2200)
    {var Today=new Date();
    b=Today.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();
    }
    else if (a.getFullYear()<1930)
    b=(a.getFullYear()+100)+"-"+(a.getMonth()+1)+"-"+a.getDate();
    else b=a.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();
    obj.value=obj.value.replace(/[-\.\/]0*/g,"-");
    if (b!=obj.value)
    {
    obj.value=b;
    alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进行了修改。");
    obj.select();
    obj.focus();
    return false;
    }
    return true;
    }
    </script>
      

  3.   

    限定形式: 2002-11-21,
    这样依据长度、“-”的位置,“-”位置前后的数据长度和数值的大小来测定。
    在vbscript中有split函数可以拆分以特定字符分割的字符串,这里是使用“-”来分割的。然后可以使用结果数组来检查长度和大小。这样可以达到你所需要的要求。
      

  4.   

    总之不会像java那样有现成的日期的函数,的自己编写,将数据拆开来自己验证。