jQuery datepicker показать в следующем месяце, если ближе к концу текущего месяца


Если текущая дата близка к концу месяца, как я могу настроить календарь на автоматическое отображение следующего месяца?

Чтобы решить вопрос о календаре, когда-либо нарушающем это.

Введите описание изображения здесь

На данный момент у меня есть:

$(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

2 ответа:

Используйте событие 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/, выберите 30 ноября и откройте снова.

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
});