如果接近当月月底,jQuery datepicker会在下个月展示

时间:2012-10-31 08:31:36

标签: jquery jquery-ui-datepicker

如果当前日期接近月末,如何将日历设置为下个月自动显示?

解决日历中违约的问题。

enter image description here

目前我有:

$(predecessor+"input.datePicker").datepicker({
    minDate: 0,
    changeMonth: true,
    dateFormat: "dd/mm/yy",
    firstDay: 1,
    hideIfNoPrevNext: true,
    showAnim: 'slideDown',
    showOn: "both",  
    showOtherMonths: true,
    showStatus: true,
    maxDate: '-1d'
});

2 个答案:

答案 0 :(得分:3)

使用beforeShow事件设置属性numberOfMonths

$('#calendar').datepicker({
    //minDate: 0,
    changeMonth: true,
    dateFormat: "dd/mm/yy",
    firstDay: 1,
    hideIfNoPrevNext: true,
    showAnim: 'slideDown',
    showOn: "both",  
    showOtherMonths: true,
    showStatus: true,
    //maxDate: '-1d'
    beforeShow: function(text, inst){        
        var next_day = new Date(
            inst.selectedYear,
            inst.selectedMonth,
            inst.selectedDay
        );        
        next_day.setDate(next_day.getDate()+1);
        console.log(inst.selectedMonth);
        console.log(next_day.getMonth());
        if(inst.selectedMonth != next_day.getMonth())
            return {numberOfMonths: 2};
        else
            return {numberOfMonths: 1};
    }
}).datepicker("setDate", "+0d" );​

演示:http://jsfiddle.net/Z44PQ/1/,选择11月30日再次打开。

答案 1 :(得分:1)

Datepicker有一个defaultDate选项,用于指定突出显示的日期。

所以,如果你提出你的逻辑来确定它何时需要在下个月开始,它应该非常简单。

var defaultDate = new Date();
if(advanceMonth){
  defaultDate = new Date(defaultDate.getYear(), defaultDate.getMonth() + 1, 1, 0, 0,0)
}

$(predecessor+"input.datePicker").datepicker({
  defaultDate: defaultDate
});