这个改起比较麻烦,没有深究,简单兼容了yyyy 和yyyy-MM,其他格式可能还是会有错误。替换Dates.check方法。
//检测日期是否合法 Dates.check = function(){ var reg = Dates.options.format.replace(/YYYY|MM|DD|hh|mm|ss/g,'\d+\').replace(/\$/g, ''); var exp = new RegExp(reg), value = Dates.elem[as.elemv]; var arr = value.match(/d+/g) || [], isvoid = Dates.checkVoid(arr[0], arr[1], arr[2]); if(value.replace(/s/g, '') !== ''){ if(!exp.test(value)){ Dates.elem[as.elemv] = ''; Dates.msg('日期不符合格式,请重新选择。'); return 1; } else if(isvoid[0]){ Dates.elem[as.elemv] = ''; Dates.msg('日期不在有效期内,请重新选择。'); return 1; } else { isvoid.value = Dates.elem[as.elemv].match(exp).join(); arr = isvoid.value.match(/d+/g); if (arr.length > 1) { if (arr[1] < 1) { arr[1] = 1; isvoid.auto = 1; } else if (arr[1] > 12) { arr[1] = 12; isvoid.auto = 1; } else if (arr[1].length < 2) { isvoid.auto = 1; } } if (arr.length > 2) { if (arr[2] < 1) { arr[2] = 1; isvoid.auto = 1; } else if (arr[2] > Dates.months[(arr[1] | 0) - 1]) { arr[2] = 31; isvoid.auto = 1; } else if (arr[2].length < 2) { isvoid.auto = 1; } } if(arr.length > 3){ if(Dates.timeVoid(arr[3], 0)){ isvoid.auto = 1; }; if(Dates.timeVoid(arr[4], 1)){ isvoid.auto = 1; }; if(Dates.timeVoid(arr[5], 2)){ isvoid.auto = 1; }; } if(isvoid.auto){ Dates.creation([arr[0], arr[1]|0, arr[2]|0], 1); } else if(isvoid.value !== Dates.elem[as.elemv]){ Dates.elem[as.elemv] = isvoid.value; } } } };