我正在使用Pikaday javascript datepicker。
默认功能是将其附加到输入,因此单击输入将加载日期选择器,其位置将相对于输入。
我想要的是使用此库来显示始终可见的日历。我尝试了几件没有成功的事情,比如将它附加到div。我希望能够让它始终显示并能够控制它的位置。
有什么想法吗?
答案 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();