2012-08-10 124 views
4

我試圖連接2日期選擇器以允許用戶選擇日期範圍。jQuery UI 2日期選擇器和範圍選擇

我創建這樣的代碼:

$(function() { 
    var dates = $("#fromDate, #toDate").datepicker({ 
     dateFormat: 'yy-mm-dd', 
     changeMonth: true, 
     changeYear: true, 
     minDate: new Date(2010, 2 - 1, 2), 
     onSelect: function(selectedDate) { 
      var option = this.id == "fromDate" ? "minDate" : "maxDate", 
       instance = $(this).data("datepicker"), 
       date = $.datepicker.parseDate(
       instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings); 
      dates.not(this).datepicker("option", option, date); 
     } 
    }); 
}); 

這工作得很好,但我得到奇怪的錯誤: 當我第一次使用輸入第二個是日期選擇器選擇日期顯示,從第二個日期。 我認爲onSelect函數基於第二個datepicker設置不知何故日期。

如果第一個日期選擇器的日期與第二個日期相同,則不顯示此錯誤。

如何重現此行爲:

  • 在第一日期選擇器選擇「2010-02-05」(後你點擊日期從第二日期選擇第二個月和年字段更改爲年,月)

這是我的jsfiddle:http://jsfiddle.net/Misiu/TyQSG/1/

我應該如何改變onSelect函數刪除這個錯誤?

+0

究竟......你會舉例explan你想要什麼.. – 2012-08-10 12:03:47

+0

我想後,我選擇日期刪除日期更改。現在,如果datepickers具有不同的月/年的錯誤,我描述的可見 – Misiu 2012-08-10 12:05:16

+0

看看http://jqueryui.com/demos/datepicker/#date-range更有效的實施 – 2012-08-10 12:08:03

回答

2

這並不能解決他們在datepicker代碼中明顯存在錯誤的問題,但這是一個解決方法。

如果設置showAnim爲空,然後就不會有任何動畫,並從以前的日曆上的日期將不會顯示:

showAnim:"", 
+0

這一行是需要日期範圍的。如果您選擇第一個日期(從日期),那麼第二個(迄今)必須更大。此行設置maxDate的minDate作爲第二個(來自數組的第二個)datepicker。 – Misiu 2012-08-10 12:22:25

+0

該解決方案可以爲您工作嗎? – Niklas 2012-08-10 13:04:38

+0

這項工作就像它應該! :)感謝您的快速解決。這不會改變日期選擇器有一個錯誤 – Misiu 2012-08-10 13:28:41

6

請檢查。我認爲這是你想要的?

根據UI示例更改了您的代碼。

$(function() { 
    $("#fromDate").datepicker({ 
     dateFormat: 'yy-mm-dd', 
     changeMonth: true, 
     changeYear: true, 
     minDate: new Date(2010, 2 - 1, 2), 
     onSelect: function(selectedDate) { 
      $("#toDate").datepicker("option", "minDate", selectedDate); 
     } 
    }); 
    $("#toDate").datepicker({ 
     dateFormat: 'yy-mm-dd', 
     changeMonth: true, 
     changeYear: true, 
     minDate: new Date(2010, 2 - 1, 2), 
     onSelect: function(selectedDate) { 
      $("#fromDate").datepicker("option", "maxDate", selectedDate); 
     } 
    }); 
});​ 

FIDDLE

+0

+ 1爲您的答案 – 2012-08-10 13:17:56

+0

@Vins的事實 - 我得到相同的行爲。我的範圍代碼工作正常,但我的問題是關於當兩個日期在其他月份時顯示的錯誤。這也存在於您的代碼 – Misiu 2012-08-10 13:24:52

+0

對不起,我無法解決您的問題。請您再詳細解釋一遍。 – Vins 2012-08-10 13:33:34