我正在使用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
});
});
});//]]>
Run Code Online (Sandbox Code Playgroud)
(这是查询的日期范围).
我的问题是:
呈现日历时,由于某种原因,它决定在可选择的内容上添加一个月.IE浏览器.如果您将结束日期设置为3月31日,它会将其更改为5月1日,或者如果您将其设置为2月2日,它将允许您选择截至3月1日.我试过通过从日期减去1个月来绕过这个,但当然这不起作用,因为月份有不同的天数,所以如果我在那里有3月31日,我不能简单地减去1个月作为第31个月2月不存在.
任何想法代码有什么问题?我很确定它上面的jQuery代码!
您可以在http://bookingtest.walesdesign.com上看到该示例
我认为问题在于您将结束日期设置为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
});
});
Run Code Online (Sandbox Code Playgroud)