如何使Pikaday datepicker始终可见

时间:2014-05-16 20:58:37

标签: javascript datepicker visibility pikaday

我正在使用Pikaday javascript datepicker

默认功能是将其附加到输入,因此单击输入将加载日期选择器,其位置将相对于输入。

我想要的是使用此库来显示始终可见的日历。我尝试了几件没有成功的事情,比如将它附加到div。我希望能够让它始终显示并能够控制它的位置。

有什么想法吗?

2 个答案:

答案 0 :(得分:12)

起初,我还实施了一个hacky解决方案,但后来我发现了一种常规的方法来使Pikaday datepicker始终可见:

var picker = new Pikaday(
{
    field: document.getElementById('datepicker'),
    bound: false,
    container: document.getElementById('container'),
});

使用此示例:http://dbushell.github.io/Pikaday/examples/container.html

答案 1 :(得分:5)

如果这有助于其他人:

由于Pikaday库并不是真的意味着以这种方式使用,我必须实施一个解决方案。好处是它不需要修改Pikaday代码本身,因此与未来的版本完全兼容(假设他们没有重命名'隐藏'功能)。

首先,我只是将日期选择器附加到空div并使用css将其移动到正确位置:

var datePicker = new Pikaday({
   field: $('#empty-div')[0]
});

然后我只是代理Pikaday隐藏功能并暂时将其设置为noop:

var hideFun = datePicker.hide;
datePicker.hide = function() {/*noop*/}

现在,我可以显示日期选择器而不用担心它会消失在我身上(因为内部会调用新的noop hide功能):

datePicker.show();

最后,当我准备恢复datepicker的原始操作时,我将该函数重置为原始函数,并隐藏datePicker(因为我以模态显示它):

datePicker.hide = hideFun;
datePicker.hide();