jQuery datepicker show next month if near the end

2019-05-29 01:33发布

If the current date is near the end of the month, how can I set the calendar to auto show the next month?

To solve the issue of the calendar ever defaulting to this.

enter image description here

At the moment I have:

$(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条回答
家丑人穷心不美
2楼-- · 2019-05-29 02:10

Datepicker has a defaultDate option that specifies which day starts out highlighted.

So, if you come up with your logic to determine when it needs to start on the next month, it should be pretty simple.

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

$(predecessor+"input.datePicker").datepicker({
  defaultDate: defaultDate
});
查看更多
对你真心纯属浪费
3楼-- · 2019-05-29 02:27

Use beforeShow Event to set the attribute 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" );​

Demo : http://jsfiddle.net/Z44PQ/1/, select 30 Nov and open again.

查看更多
登录 后发表回答