我看到很多关于datepicker定位的问题和答案,但找不到我的情况的答案。
所以,这是我的datepicker创建者函数:
$(function() {
$( "#datepicker" ).datepicker({
dateFormat: 'dd/mm/yy',
minDate:current_date,
currentText: 'Today',
firstDay: 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有一个简约的例子。小心边缘情况。