我在我的页面上使用了几个日期选择器,在某些情况下,我用其中一个隐藏了一个 div。之后,其他日期选择器的位置不再正确,它们远高于输入。我认为这是因为位置是在初始化时确定的,因为如果我再次显示 div 位置是正确的。
但是,如果其他日期选择器(div)隐藏,如何使其位置发生变化?
我在我的页面上使用了几个日期选择器,在某些情况下,我用其中一个隐藏了一个 div。之后,其他日期选择器的位置不再正确,它们远高于输入。我认为这是因为位置是在初始化时确定的,因为如果我再次显示 div 位置是正确的。
但是,如果其他日期选择器(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/
添加另一个答案,因为接受的答案对我不起作用,因为我使用的是 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;
});