2011-08-09 30 views
1

我的頁面上有兩個jQueryUI日期選擇器。jQueryUI datepicker - 當調用show()時,第二個實例閃爍然後消失

他們初始化如下:

jQuery("#departureDate").datepicker({ 
    beforeShow: function() { 
     getDatesForCalendar("outbound"); 
    }, 
    numberOfMonths: 3, 
    constrainInput: true, 
    dateFormat: 'dd/mm/yy', 
    showButtonPanel: false, 
    hideIfNoPrevNext: true, 
    onSelect: function(dateText, inst) { jQuery('#returnDate').datepicker("show"); } 
}); 


jQuery("#returnDate").datepicker({ 
    beforeShow: function() { 
     getDatesForCalendar("return"); 
    }, 
    numberOfMonths: 3, 
    constrainInput: true, 
    dateFormat: 'dd/mm/yy', 
    showButtonPanel: false, 
    showOn: "focus", 
    hideIfNoPrevNext: true, 
    defaultDate: +1 
}); 

他們彈出之前,他們檢查使用getDatesForCalendar(),它不包含任何代碼應該隱藏或顯示日曆,其日期是提供給他們。

我的問題是,當第一個日曆調用第二個(這是onSelect),第二個日曆閃爍一秒鐘,然後消失。這是FF/Chrome唯一的問題,它似乎不會影響IE8。

我已經嘗試了一些解決方案,包括更改tabindex(現在沒有),禁用焦點功能顯示,最後而不是手動調用datepicker(「顯示」)我試過調用焦點()在它綁定的字段上。沒有任何工作!

任何意見將大大讚賞。

非常感謝,

傑克

回答

1

看起來你將不得不回滾到jQuery UI的1.7.3(在的jsfiddle下管理資源加載)

http://jsfiddle.net/6haqv/3/

可能的錯誤中jquery ui 1.8

+0

感謝有趣的,謝謝。我已經能夠通過調用datepicker(「redraw」)來找到一個臨時的解決方法,它會顯示日期選擇器,但會導致頁面重新繪製並在瀏覽器窗口中滾動。 明天我會檢查回滾並更新結果。 –

+0

是的,切換到1.7.3,工作正常。謝謝。 –

+0

在jQuery UI 1中也存在Bug。10 – daamsie

8

而不是在onSelect中顯示datepicker使用onClose事件。

jQuery("#departureDate").datepicker({ 

      numberOfMonths: 3, 
      constrainInput: true, 
      dateFormat: 'dd/mm/yy', 
      showButtonPanel: false, 
      hideIfNoPrevNext: true, 
      onClose:function() 
       { 
       jQuery('#returnDate').datepicker('show');  
       } 
     }); 


     jQuery("#returnDate").datepicker({ 

      numberOfMonths:3, 
      constrainInput: true, 
      dateFormat: 'dd/mm/yy', 
      showButtonPanel: false, 
      showOn: "focus", 
      hideIfNoPrevNext: true, 
      defaultDate: +1 
     });​ 
+1

謝謝muthu。這工作馬上,我不需要重寫代碼或降級jQuery。 –

+1

非常感謝,你救了我的一天! – m4t1t0

1

我想僅在第一個日期選擇日期時彈出第二個日期選擇器。如果我使用onClose,即使沒有選擇任何日期,第二個日期選擇器也會顯示。

由於解決這個問題,我嘗試了下面,它的工作原理。

var checkin = $('#dpd1').datepicker({ 
    minDate:now, 
    numberOfMonths:2, 
    showOn: "button", 
    buttonImage: "img/calender.png", 
    buttonImageOnly: true, 
    onSelect: function(selectedDate) { 
     var dateObject=new Date(selectedDate); 
     dateObject.setDate(dateObject.getDate()+1); 
    $("#dpd2").datepicker("option", "minDate", dateObject); 
    showSecond=true; 
    }, 
    onClose: function(selectedDate) { 
     if(showSecond===true){ 
      $("#dpd2").datepicker("show"); 
      showSecond=false; 
     } 
    } 
}); 
0

林不知道的是,解決方案是好的,沒有如果你點擊的第一個日曆你看到發生什麼,但你不選擇任何一天,只要簡單的點擊外,然後再次嘗試打開它?

我試試看,你可以第一次打開第一個日曆,第二次你不能,你需要打開第二個日曆,然後你可以再次點擊第一個日曆。

1

我剛剛在jQuery UI 1.11.0中遇到同樣的錯誤。

我找到了一個解決方法通過在ONSELECT日期選擇方法調用的setTimeout:

$('#arrival-date, #departure-date').datepicker({ 
    showAnim: 'slideDown', 
    onSelect: function(dateText, inst){ 
     if($('#arrival-date').val() != '' && $(this).is('#arrival-date')) 
     { 
      setTimeout(function() { 
       $('#departure-date').datepicker('show'); 
      }, 100); 
     } 
    } 
}); 
相關問題