jquery datepicker动态更改位置

时间:2013-01-24 18:38:53

标签: jquery datepicker

我在我的页面上使用了几个日期选择器,在某些情况下,我用其中一个隐藏了一个div。之后,其他日期选择器的位置不再正确,它们位于输入之上。我认为那是因为这个地方是在初始化时确定的,因为如果我再次显示div,那么这个位置是正确的。

但是如果其他日期选择器(div)隐藏了如何使其改变的位置?

2 个答案:

答案 0 :(得分:3)

也许在beforeShow事件中设置位置:

$(".is-datepicker").datepicker("option", "beforeShow", function(input, inst){
   $(inst.dpDiv).position({
      my: "left top",
      at: "left bottom",
      of: $(input)
 });
版本1.8 http://api.jqueryui.com/position/

中添加了

position()

jsfiddle

答案 1 :(得分: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;
    }

并在datepicker上设置所需的回调

$('#id').datepicker('option', 'alterOffset', function(offset){
    //change offset here
    return offset;
});