2013-01-24 98 views
1

我在我的頁面上使用了幾個日期選擇器,並且在某些情況下我用其中一個隱藏了一個div。之後,其他日期選擇器的位置不再正確,它們位於輸入之上。我認爲這是因爲這個地方是在初始化時確定的,因爲如果我再次顯示div,那麼位置是正確的。jquery datepicker動態地改變位置

但是如何讓其位置發生變化,如果其他datepicker(div)隱藏?

+0

你可以使用的CSS(「知名度」,「隱藏」)而不是.hide()使用'display','none' –

回答

3

也許設定在beforeShow事件中的位置:

$(".is-datepicker").datepicker("option", "beforeShow", function(input, inst){ 
    $(inst.dpDiv).position({ 
     my: "left top", 
     at: "left bottom", 
     of: $(input) 
}); 

position()在版本1.8 http://api.jqueryui.com/position/

jsfiddle

+0

不,不起作用。在Firefox中,我現在發現沒有問題。所以它只是IE ... –

+0

你沒有嘗試用沒有用有效的選擇器替換'.is-datepicker'嗎? – Malk

+0

我做了,發生了什麼是我的輸入下移和日期選擇器stil比輸入 –

0

添加另一個答案被添加,因爲,因爲我接受的答案並沒有爲我工作我正在使用1.7,也許別人會覺得這很有用。

可以通過使用_checkOffset方法來改變需要

$.datepicker._checkOffset_original = $.datepicker._checkOffset; 
$.datepicker._checkOffset = function(inst, offset, isFixed) { 
    var offset = $.datepicker._checkOffset_original(inst, offset, isFixed); 
    var alterOffset = this._get(inst, 'alterOffset'); 
    if (alterOffset) 
     return alterOffset.apply((inst.input ? inst.input[0] : null), [offset]); // trigger custom callback 
     return offset; 
    } 

和想要的回調

在日期選擇器設置完成
$('#id').datepicker('option', 'alterOffset', function(offset){ 
    //change offset here 
    return offset; 
});