2012-10-31 73 views
1

如果当前日期接近月末,如何将日历设置为自动显示下个月?如果当前月份接近月末,jQuery 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

使用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

日期选择具有指定哪天开始时强调了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 
}); 
相关问题