我在我的頁面上使用了幾個日期選擇器,並且在某些情況下我用其中一個隱藏了一個div。之後,其他日期選擇器的位置不再正確,它們位於輸入之上。我認爲這是因爲這個地方是在初始化時確定的,因爲如果我再次顯示div,那麼位置是正確的。jquery datepicker動態地改變位置
但是如何讓其位置發生變化,如果其他datepicker(div)隱藏?
我在我的頁面上使用了幾個日期選擇器,並且在某些情況下我用其中一個隱藏了一個div。之後,其他日期選擇器的位置不再正確,它們位於輸入之上。我認爲這是因爲這個地方是在初始化時確定的,因爲如果我再次顯示div,那麼位置是正確的。jquery datepicker動態地改變位置
但是如何讓其位置發生變化,如果其他datepicker(div)隱藏?
也許設定在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/
不,不起作用。在Firefox中,我現在發現沒有問題。所以它只是IE ... –
你沒有嘗試用沒有用有效的選擇器替換'.is-datepicker'嗎? – Malk
我做了,發生了什麼是我的輸入下移和日期選擇器stil比輸入 –
添加另一個答案被添加,因爲,因爲我接受的答案並沒有爲我工作我正在使用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;
});
你可以使用的CSS(「知名度」,「隱藏」)而不是.hide()使用'display','none' –