我正在使用jQuery datepicker,其中包含从MySQL数据库收集的自定义日期范围集。查询生成的代码如下所示:
//<![CDATA[
$(window).load(function(){
var ranges = [ { start: new Date(2012, 02, 14), end: new Date(2012, 03, 31) } ];
$(function() {
$("#datepicker").datepicker({
numberOfMonths: 1,
dateFormat: 'd MM, yy',
beforeShowDay: function(date) {
for(var i=0; i<ranges.length; i++) {
if(date >= ranges[i].start && date <= ranges[i].end) return [true, ''];
}
return [false, ''];
},
minDate: ranges[0].start,
maxDate: ranges[ranges.length -1].end
});
});
});//]]>
(这是查询的日期范围。)
我的问题是:
呈现日历时,由于某种原因,它决定在可选择的内容上添加一个月。 IE浏览器。如果您将结束日期设置为3月31日,它会将其更改为5月1日,或者如果您将其设置为2月2日,它将允许您选择截至3月1日。我试过通过从日期减去1个月来绕过这个,但当然这不起作用,因为月份有不同的天数,所以如果我在那里有3月31日,我不能简单地减去1个月作为第31个月2月不存在。
任何想法代码有什么问题?我很确定它是上面的jQuery代码!
看到示例答案 0 :(得分:5)
我认为问题在于您将结束日期设置为4月31日,这不存在(因此返回5月1日)。 请记住,月份从0(1月)到11(12月)。这可以在2月14日至3月28日期间正常工作
var ranges = [ { start: new Date(2012, 1, 14), end: new Date(2012, 2, 28) } ];
$(function() {
$("#datepicker").datepicker({
numberOfMonths: 1,
dateFormat: 'd MM, yy',
beforeShowDay: function(date) {
for(var i=0; i<ranges.length; i++) {
if(date >= ranges[i].start && date <= ranges[i].end) return [true, ''];
}
return [false, ''];
},
minDate: ranges[0].start,
maxDate: ranges[ranges.length -1].end
});
});