我遇到了这个jquery(JSFiddle Link)的问题,它允许我选择一系列日期,当我选择一个日期时,它会将我选择的日期的月份移动到第一个月。例如,我从第2个月开始选择日期,日期选择器将该月移动到显示月份列表中的第一个月。我怎么能禁用它?我只是想让它留在原地。
$(".date-picker").datepicker({
numberOfMonths: 3,
beforeShowDay: function(date) {
var date1 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#date-from").val());
var date2 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#date-to").val());
return [true, date1 && ((date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2)) ? "dp-highlight" : ""];
},
onSelect: function(dateText, inst) {
var date1 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#date-from").val());
var date2 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#date-to").val());
if (!date1 || date2) {
$("#date-from").val(dateText);
$("#date-to").val("");
$(this).datepicker("option", "minDate", dateText);
} else {
$("#date-to").val(dateText);
$(this).datepicker("option", "minDate", null);
}
}
});
答案 0 :(得分:1)
正如拉米所说,这是因为在设定了最后日期后重新渲染。
为防止它跳到所选日期的月份到第一个位置,您必须添加以下行:
...
var drawMonth = $(this).data().datepicker.drawMonth; // <-- this is new
if (!date1 || date2) {
$("#date-from").val(dateText);
$("#date-to").val("");
$(this).datepicker("option", "minDate", dateText);
} else {
$("#date-to").val(dateText);
$(this).datepicker("option", "minDate", null);
}
$(this).data().datepicker.drawMonth = drawMonth; // <-- this is new
$(this).datepicker("refresh"); // <-- this is new
这不是最优雅的解决方案,但遗憾的是,可能无法控制此行为。
答案 1 :(得分:0)
考虑到它也可能会改变一年。除了雷米和约翰内斯的回答,你可能还想补充一下:
var drawYear = $(this).data().datepicker.drawYear;
...
$(this).data().datepicker.drawYear = drawYear;