jquery datepicker - 激活另一个选择日期选择器

问题描述:

我有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' 
}); 

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

我的建议是,允许用户挑选,他们希望在任一日期选择任何日期,然后做两个文本框验证的日期选择后。

从第一个日期选择器中的值中设置第二个日期选择器的日期范围的问题是,如果用户选择,例如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

$("#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