我正在使用Pikaday javascript datepicker。
默认功能是将其附加到输入,从而单击输入将加载日期选择器,并且其位置将相对于输入。
我想要的是使用这个库来显示一个始终可见的日历。我尝试了几件事但没有成功,例如将其附加到 div。我希望能够始终显示它并能够控制它的位置。
有任何想法吗?
我正在使用Pikaday javascript datepicker。
默认功能是将其附加到输入,从而单击输入将加载日期选择器,并且其位置将相对于输入。
我想要的是使用这个库来显示一个始终可见的日历。我尝试了几件事但没有成功,例如将其附加到 div。我希望能够始终显示它并能够控制它的位置。
有任何想法吗?
起初,我还实现了一个 hacky 解决方案,但后来我找到了一种让 Pikaday datepicker 始终可见的常规方法:
var picker = new Pikaday(
{
field: document.getElementById('datepicker'),
bound: false,
container: document.getElementById('container'),
});
如果这对其他人有帮助:
由于 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();