10

我正在使用Pikaday javascript datepicker

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

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

有任何想法吗?

4

2 回答 2

16

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

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

这里的例子:https ://pikaday.com/examples/container.html

于 2015-08-16T22:48:19.540 回答
6

如果这对其他人有帮助:

由于 Pikaday 库并不是真的要以这种方式使用,因此我不得不实施一个变通方法。好消息是它不需要修改 Pikaday 代码本身,因此与未来版本完全兼容(假设它们不重命名“隐藏”功能)。

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

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

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

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

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

datePicker.show();

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

datePicker.hide = hideFun;
datePicker.hide();
于 2014-05-17T02:08:10.757 回答