2011-03-04 98 views
2

我在我正在構建的站點上使用jQuery datepicker插件。我需要用戶能夠在指定的日期範圍內選擇兩個日期。這很簡單。Datepicker動態最小/最大日期

問題是日期的允許範圍根據另一個選擇框(帶有建築物名稱)而改變。所以我需要做的是在mysql數據庫中查找建築物,返回允許的最小和最大日期,並使用datepicker允許用戶選擇允許範圍內的日期範圍。

在我的主頁,我目前使用的:

$('#dateStartMainChart').load(url); 

加載一個PHP文件,該文件輸出:

<script> 
$(function() { 
    $("#dateEndMainChartSelect").datepicker({ 
     dateFormat: 'yy-mm-dd', 
     defaultDate: -1, 
     minDate: new Date(2011,03,03), 
     maxDate: +0, 
      firstDay: 1, 
     changeMonth: true, 
     changeYear: true 
    }); 
}); 
</script> 
<input type="text" class="text" value=2011-03-04 id="dateEndMainChartSelect" align="center"/> 

其中的minDate和的maxDate已經從MySQL數據庫無誤。然而,結果是我只是在我的主頁上得到一個帶有日期的文本框,而不是datepicker元素。

有什麼想法?

+1

「minDate:new Date(2011,03,03)?>),」... where has the?>)來自...複製/粘貼錯誤或代碼錯誤?我猜這只是剝離了一個「<?=」出來,但我也可以問:P – 2011-03-04 16:45:10

+0

這是我的一個錯字,它本不應該在那裏。但是,當我運行它時,這不會對問題產生影響。 – bpmccain 2011-03-07 16:52:37

回答

5

好的,我終於明白了這一點。我最初定義並使用datepicker是正常的。當我需要動態更新它時,我使用:

$.getScript('url.php', function() {updateDate(); }); 

在我的情況下,我在選擇框的變化上使用它。

被稱爲PHP文件查詢MySQL數據庫輸出以下(使用echo):

function updateDate() { 
     $("#dateStartMainChartSelect").datepicker('change',{ 
      minDate: new Date(2011,01,01), 
      maxDate: new Date(2011,02,01) 
     }); 
    } 

你可以在這裏添加任何的日期選擇器選項,你想改變。感謝JasCav,我最終找到了解決方案的正確位置。

+0

快樂我讓你走在正確的道路上。很高興你找到了解決方案! – JasCav 2011-03-08 17:47:21

8

如果你想這樣做,你可以使用datepicker的「beforeShow」屬性來幫助你。這是一個僞代碼示例。你甚至不需要直接看數據庫(雖然,你可以 - 在customRange函數中適當調整字段)。無論如何,這應該做你需要的。

+0

謝謝。我明天會測試一下,看看它是否有效。 – bpmccain 2011-03-07 03:32:09

+0

好吧,所以我嘗試過這種方法,它可以動態限制範圍,以便結束日期必須在開始日期之後。我無法弄清楚如何直接使用它來查看數據庫?說我想設置minDate使用SELECT查詢到MySQL數據庫? – bpmccain 2011-03-07 16:06:03

+0

@bpmccain - 您需要使用服務器端語言檢索數據庫值,然後將該值與上述函數中的日期進行比較。在我的回答中,我假設你正在從數據庫填充一些字段,並且只是想在用戶回發到服務器之前進行比較。 – JasCav 2011-03-07 17:23:42

相關問題