我在我的页面上使用了几个日期选择器,并且在某些情况下我用其中一个隐藏了一个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' –