2012-11-05 79 views
3

我需要在用戶點擊'Next'月份或'Previous'月份之後用自定義css重新填充datepicker。我正在使用onChangeMonthYear事件,但不知道用戶要去哪個方向(下個月或上個月)。有沒有簡單的內置,會給我這個?如果不是,最簡單的解決方案是什麼?jQuery Datepicker:用戶去下個月還是上個月?

*添加代碼在這裏澄清請注意,該事件將實際上是通過服務器端進來,我剛剛空置了一些數據,而在這裏我建*

var Event = function(text, className) { 
      this.text = text; 
      this.className = className; 
     }; 

     var events = {}; 
     events[new Date("11/12/2012")] = new Event("A Good Day", "yellowDot"); 
     events[new Date("11/20/2012")] = new Event("Mkay", "blueDot"); 

     $('#date').datepicker({    
      beforeShowDay: function (date) { 
       var event = events[date]; 
       if(event) { 
        return [true, event.className, event.text]; 
       } 
       else { 
        return [true, '', '']; 
       } 
      }, 
      onChangeMonthYear: function() { 
       //reload another calendar, past or future? 

      } 
     }); 
+0

你能提供進一步的細節:爲什麼你必須知道改變的方向?它可以幫助我們更好地理解你的意圖。正如你的問題所述,我只能建議綁定''Prev' /'Next'按鈕上的'click'事件,而不是處理'onChangeMonthYear'。 –

+0

我在日曆上做了一些「可點擊」的日期。因此,如果用戶前進,我需要打一些數據,並將該月的約會帶回新的月視圖。同樣適用於上個月。 – Matt

+0

好的,但爲什麼你需要改變的方向呢?您可以使用新選擇的月份和年份來查詢數據並相應地更新小部件。或者我錯過了什麼? –

回答

4

你傳遞一個onChangeMonthYear處理函數到datepicker小部件。該函數將帶有三個參數來調用:

  • 新選擇的一年,
  • 新選擇一個月
  • 的日期選擇控件實例。

因此,你可以寫這樣的:

onChangeMonthYear: function(year, month, widget) { 
    reloadCalendar(month, year); 
} 

小部件實例參數被設置爲快捷鍵,以避免經歷的橋樑,如果你要處理的自動完成構件。例如,你應該要立即關閉日期選擇器,它可以讓你寫:

widget.hide(); 

相反的:

$(this).datepicker("hide"); 
1

日期選擇器動態創建的,所以你應該使用.live

$('.ui-datepicker-next').live("click", function() { 
    alert(1) 
}