2012-02-04 19 views
2

這似乎是JQ_ui Datepicker的一個遺漏遺漏,但也許somebod有一個答案。JQuery日期範圍:如何觸發一個初始化「選擇」事件來設置默認值

我需要兩個輸入,每個點擊/聚焦時其日期選擇器顯示

每個輸入結果都與另一個關聯,但是第二個不是強制日期輸入。

當使用JQ_ui日期範圍示例代碼下面)都似乎工作得很好。我甚至可以添加很多選項來將它打扮一點點。

因此,無論哪個輸入填充選取器選定日期,它都會發出/準備其他日期選擇器(,如果集中,則會出現)以顯示可用日期的限制。這正是它的預期,並且在這一點上是一個非常有用的小部件。

THEN來了downer。當表單頁面重新顯示時(現在或某個未來時間),以前的日期將顯示在輸入框中以供參考/檢查/更正。

通過經由 $施加保存的值與輸入框(函數(){$( 「#gmtTxt1」)日期選擇器( 「的setDate」, '$ DST1');等等 上述交輸入功能將丟失直到一個日期選擇器手工用於選擇另一個或通過選擇器重新選擇相同的日期,甚至硬編碼將重新顯示的表格頁面中保存的默認值嵌入填充它

因此,適用的答案是否有人知道如何在初始化期間調用選擇事件到嵌入默認日期模仿手動選擇過程和交叉部件交互(顯示一對的日期選擇器不能幫助)。

僅供參考這裏是JQ_UI日期範圍的示例代碼(次要元素ID改變)上,我基地我的測試...

$(function() { 
    var dates = $("#first, #second").datepicker({ 
     //defaultDate: "+1w", // n/a, many other options work ok to dress it up 
     changeMonth: true, 
     numberOfMonths: 1, 
     onSelect: function(selectedDate) { 
      var option = this.id == "first" ? "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); 
     } 
    }); 
}); 

感謝您的考慮。

+1

設置一個jsfiddle或鏈接到頁面? – mowwwalker 2012-02-04 21:40:26

+0

jsfiddle SAMPLE ... http://jsfiddle.net/qXpE5/2/ – 2012-02-05 04:18:37

回答

1

看來解決方案非常簡單。

從東西我終於找到計算器(嘆息;小時搜索)我首先總結了以下...

$(document).ready(
    $(function(){ 
     var doDate; 
     if($("#Text1").val()){ 
      doDate = new Date(Date.parse($("#Text1").datepicker('getDate'))); 
      $("#Text2").datepicker('option', 'minDate', doDate); 
     } 
     if($("#Text2").val()){ 
      doDate = new Date(Date.parse($("#Text2").datepicker('getDate'))); 
      $("#Text1").datepicker('option', 'maxDate', doDate); 
     } 
    }) 
); 

...這似乎不過如果anybod發現錯誤,只是做工精細在不太新近的瀏覽器中,讓我們都知道這會有所幫助; 我沒有這些資源

在名爲函數放置它也可以使用形式復位(的onClick),並且檢查格式,並且如果復位輸入拾取器手動編輯.change事件()稱爲錯誤)。

這是一個了不起的貢獻者奇妙的網站。問候。

0

如果你想讓你的代碼在onSelect以外的某個時間運行,那麼你需要告訴這個datepicker。也許你也可以鉤進create

$(function() { 
    var formatDP = function(selectedDate) { 
      var option = this.id == "first" ? "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); 
     }; 
    var dates = $("#first, #second").datepicker({ 
     //defaultDate: "+1w", // n/a, many other options work ok to dress it up 
     changeMonth: true, 
     numberOfMonths: 1, 
     create: formatDP, 
     onSelect: formatDP 
    }); 
}); 
+0

謝謝** Sinetheta **,但是這只是準備小部件,但仍然不會導致當前輸入值(s)限制選擇器(s)選擇他們(*在啓動*);正如通過選取器實際執行手動選擇操作時發生的那樣。 從邏輯上說,選擇器應該在初始化期間對任何現有的啓動輸入日期做出反應並設置限制。我只是希望一些機構知道一種導致程序發生的方式。 – 2012-02-05 14:43:44

相關問題