2012-07-25 111 views
1

我有2個jQuery日期選擇器來選擇一個日期範圍。jquery datepicker - 激活另一個選擇日期選擇器

一旦我選擇了一個從第一個datepicker的日期,我想激活第二個(到)datepicker。

下面的代碼是這樣做的,但由於某種原因馬上關閉了日期選擇器。

任何想法? - http://jsfiddle.net/rN4zu/

From <input type="text" id="dateFrom" /> 
To <input type="text" id="dateTo" /> 

jQuery的

$("#dateFrom").datepicker({ 
    minDate: 0, 
    maxDate: "+2Y", 
    showWeek: true, 
    weekHeader: 'Wk', 
    onSelect: function(selectedDate) { 
     $("#dateTo").datepicker("option", "minDate", selectedDate).focus(); 
    } 
}); 

$("#dateTo").datepicker({ 
    maxDate: "+2Y", 
    showWeek: true, 
    weekHeader: 'Wk' 
}); 

回答

8

http://jsfiddle.net/8YTKR/

的問題與命令斜坡上升互相反對這樣做後卡住。 set min date命令和.focus正在同時發生,這是造成問題的原因。

好的,所以首先.focus不是觸發日期選擇器的首選方式。首選的方法是使用看起來像這樣的datapicker show方法.datepicker('show');。所以在這個例子中,我們將使用它。

接下來我們需要確保'show'在min date命令後發生。並且由於該命令沒有回調,我將使用setTimeout

$("#dateFrom").datepicker({ 
    minDate: 0, 
    maxDate: "+2Y", 
    showWeek: true, 
    weekHeader: 'Wk', 
    onSelect: function(selectedDate) { 
     $("#dateTo").datepicker("option", "minDate", selectedDate); 
     setTimeout(function(){ 
      $("#dateTo").datepicker('show'); 
     }, 16);  
    } 
}); 

$("#dateTo").datepicker({ 
    maxDate: "+2Y", 
    showWeek: true, 
    weekHeader: 'Wk' 
}); 

爲什麼16ms你說?因爲它沒有顯示在屏幕上的可能性最大。出於這個原因,16ms是默認的jquery動畫間隔。

+0

你需要在這裏發佈你的代碼,_and_解釋它爲什麼可以工作 – Alnitak 2012-07-25 15:52:31

+0

我正在這樣做。小提琴準備就緒後,我會立即發帖,然後將解釋作爲編輯進行編寫。 – Fresheyeball 2012-07-25 15:53:18

+0

恕我直言,這是更正常的做,反過來... – Alnitak 2012-07-25 15:54:19

0

我的建議是,允許用戶挑選,他們希望在任一日期選擇任何日期,然後做兩個文本框驗證的日期選擇後。

從第一個日期選擇器中的值中設置第二個日期選擇器的日期範圍的問題是,如果用戶選擇,例如7月21日意外,那麼第二個日期選擇器將在7月21日開始,但是當他們去更改第一個日期選取器7月1日,第二個日期選擇器將在日期7月21日

+0

你會看到@Rishi回答將有問題,我描述 – 2012-07-25 15:48:53

+0

我用@Rishi答案,並不能得到你描述的問題。 – Tom 2012-07-25 15:50:45

+0

如果它的工作,使用它,我只是發現過去在某些瀏覽器中使用datepicker的問題 – 2012-07-25 15:52:00

3
$("#dateTo").datepicker("option", "minDate", selectedDate).focus(0); 
+0

這似乎工作,但我不明白爲什麼沒有記錄數字參數給'.focus()'。請解釋! – Alnitak 2012-07-25 15:53:35

+0

我正要說同樣的事情@Alnitak! – Tom 2012-07-25 15:54:23

+0

@Tom啊,這是一個jQuery UI擴展。它和fresheyeball的答案一樣 - 它使用'setTimeout'來推遲'focus',直到當前的日期選擇器完成隱藏。 – Alnitak 2012-07-25 15:57:19

相關問題