jQuery datepicker定位

时间:2014-08-27 14:06:31

标签: javascript jquery html datepicker

我看到很多关于datepicker定位的问题和答案,但找不到我的情况的答案。

所以,这是我的datepicker创建者函数:

$(function() {
    $( "#datepicker" ).datepicker({
        dateFormat: 'dd/mm/yy',
        minDate:current_date,
        currentText: 'Today',
        firstDay: 1,
    });

当我点击输入时,日期选择器显示在正确的位置,但是当我减小浏览器窗口的宽度时,它会保持在相同的位置(因为它的位置是绝对的)。

我需要更改选择器外观,以使其与输入保持在同一位置。

提前致谢

1 个答案:

答案 0 :(得分:1)

重新定位datepicker的代码可以在jQueryUI的$.datepicker._showDatepicker函数中找到。为.resize处理程序调整它是相当丑陋的,但并不是非常困难。以下是使魔术发生的线条:

    inst = $.datepicker._getInst(input);
    if (!$.datepicker._pos) { // position below input
        $.datepicker._pos = $.datepicker._findPos(input);
        $.datepicker._pos[1] += input.offsetHeight; // add the height
    }
    offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
    // and adjust position before showing
    offset = $.datepicker._checkOffset(inst, offset, isFixed);
    inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
        "static" : (isFixed ? "fixed" : "absolute")), display: "none",
        left: offset.left + "px", top: offset.top + "px"});

inst.dpDiv是对datepicker周围包装器的引用,inst是对datepicker本身的引用。

Here's a fiddle有一个简约的例子。小心边缘情况。