0

我正在使用JQuery DatePicker讓用戶選擇一個日期並使其顯示在文本框中。很簡單。然而,我正在處理的一個限制是,日期範圍受限於當前在用戶下拉菜單中選擇的月份到月份的開始日期和結束日期。基於下拉菜單的JQuery限制日期範圍

因此,例如,如果某人在下拉列表中選擇「Aug/2010」,那麼文本框的Datepicker必須在8月1日到8月31日之間 - 月份的開始和結束。這

文本框輸出HTML:

<select id="ctl00_contentlocalnav_Menu_selectmonth"> 
    <option value="NA">-- Select Month --</option> 
    <option value="Jun/2010">Jun/2010</option> 
    <option selected="selected" value="May/2010">May/2010</option> 
    <option value="Aug/2009">Aug/2009</option> 
    <option value="Jul/2009">Jul/2009</option> 
</select> 

JQuery的:

 jQuery(document).ready(function() { 
     $("#ctl00_contentactual_txtDate").datepicker({ minDate: new Date(2010, 8 - 1, 1), maxDate: new Date(2010, 8 - 1, 31) }); 
    }); 

正如你看到JQuery的範圍是硬編碼。解決這個問題的最好方法是什麼?

+0

出於好奇,爲什麼你不允許用datepicker選擇年份和月份呢? 如果爲了方便起見(大年份範圍),那麼爲什麼你需要限制用戶? – 2010-08-11 18:52:06

+0

這是一個很好的問題 - 大多數情況下它不符合慣例,因爲這是我從數據庫中取回數據的方式。 – firedrawndagger 2010-08-11 18:54:23

+0

您能否澄清爲什麼用戶限制在特定的月份和年份對?如果您需要月份和年份從數據庫中獲取數據,您是否可以不從所選日期獲取月份和年份,並從那裏查找數據庫? – 2010-08-11 19:05:53

回答

1

這是我會做的。

將下拉值更改爲包含能夠通過JavaScript解析的最小/最大日期範圍。 例如:

<select id="ctl00_contentlocalnav_Menu_selectmonth"> 
    <option value="NA">-- Select Month --</option> 
    <option value="06/01/2010-06/30/2010">Jun/2010</option> 
    <option selected="selected" value="05/01/2010-05/31/2010">May/2010</option> 
    <option value="08/01/2009-08/31/2009">Aug/2009</option> 
    <option value="07/01/2009-07/31/2009">Jul/2009</option> 
</select> 

然後,您可以綁定到change事件降下來,並改變日期選取範圍。

$(function() { 
    $('#ctl00_contentlocalnav_Menu_selectmonth').change(function() { 
     var ranges = $(this).val().split('-'); 
     var minDate = new Date(); 
     minDate.setTime(Date.parse(ranges[0])); 
     var maxDate = new Date(); 
     maxDate.setTime(Date.parse(ranges[1])); 
     $("#ctl00_contentactual_txtDate").datepicker('option', 'minDate', minDate); 
     $("#ctl00_contentactual_txtDate").datepicker('option', 'maxDate', maxDate); 
    }); 
});​ 
+0

這很好,但我無法更改該值,因爲它實際上是一個ASP下拉控件。 – firedrawndagger 2010-08-11 20:16:53

+0

這是可能的。我過去做過。如果您提供了一些示例代碼,我可以嘗試幫助您。 – 2010-08-11 20:50:32