2012-03-13 101 views
1

我正在使用jQuery datepicker,具有從MySQL數據庫收集的一組自定義日期範圍。查詢得到的代碼如下所示:jQuery datepicker,自定義範圍怪癖

//<![CDATA[ 
$(window).load(function(){ 
    var ranges = [ { start: new Date(2012, 02, 14), end: new Date(2012, 03, 31) } ];    
    $(function() {  
     $("#datepicker").datepicker({ 
      numberOfMonths: 1, 
      dateFormat: 'd MM, yy', 
      beforeShowDay: function(date) { 
       for(var i=0; i<ranges.length; i++) { 
        if(date >= ranges[i].start && date <= ranges[i].end) return [true, '']; 
       } 
       return [false, '']; 
      }, 
      minDate: ranges[0].start, 
      maxDate: ranges[ranges.length -1].end 
     }); 
    }); 
});//]]> 

(這是查詢的日期範圍)。

我的問題是這樣的:

當日歷呈現,由於某種原因,它決定每月新增到什麼是可選的。 IE瀏覽器。如果您將結束日期設置爲3月31日,則會將其更改爲5月1日,或者如果將其設置爲!st Feb,則可以在3月1日之前選擇結束日期。我已經嘗試通過從日期減去1個月來解決這個問題,但是當然這不起作用,因爲月份有不同的天數,所以如果我有3月31日在那裏,我不能簡單地減去1個月作爲第31次2月不存在。

任何想法有什麼問題的代碼?我很確定它的上面的jQuery代碼!

您可以在http://bookingtest.walesdesign.com

+1

的JavaScript'Date'使用基於0的月指標(如果你問我這是愚蠢的)......月份爲0,二月是1,... – zzzzBov 2012-03-13 15:30:45

回答

5

看到的例子,我覺得現在的問題是,你的結束日期設定到4月31日,它不存在,(因此5月1日返回)。 請記住,月份從0(1月)到11(12月)。可正常工作從2月14日至3月28日

var ranges = [ { start: new Date(2012, 1, 14), end: new Date(2012, 2, 28) } ];    
$(function() {  
    $("#datepicker").datepicker({ 
     numberOfMonths: 1, 
     dateFormat: 'd MM, yy', 
     beforeShowDay: function(date) { 
      for(var i=0; i<ranges.length; i++) { 
       if(date >= ranges[i].start && date <= ranges[i].end) return [true, '']; 
      } 
      return [false, '']; 
     }, 
     minDate: ranges[0].start, 
     maxDate: ranges[ranges.length -1].end 
    }); 
}); 
+0

謝謝你的幫助!我沒有意識到,從0-11月份開始。所以我認爲我需要找到一種方法將日期的PHP版本(May = 5)轉換爲日期的jQuery版本(May = 4)。有沒有共同的方式來做到這一點?或者我只需要編寫一個PHP腳本,該腳本將從 - 月份開始? – 2012-03-13 15:51:24

+1

@KevinSmith在做-1我認爲是可以接受的。 :) – 2012-03-13 15:52:09