以下是我使用 Pikaday 的 From 和 To 日期选择器的 Javascript(不带 jQuery)解决方案。它适用于 Chrome 和 Firefox,但不适用于 Chrome-Android。
var nowDT = new Date();
var nowDTStr = nowDT.toShortDate();
var sin = document.createElement('input');
sin.setAttribute('type', 'text');
sin.setAttribute('id', this.id + "_cp_sin");
sin.style.width = '20%';
sin.style.cssFloat = 'left';
this.controlPanel.appendChild(sin);
this.sinPika = new Pikaday({
field: sin,
firstDay: 1,
minDate: new Date('2001-01-01'),
maxDate: new Date(nowDTStr),
yearRange: [2001, nowDT.getFullYear()]
});
this.sinPika.setDate(nowDTStr);
var ein = document.createElement('input');
ein.setAttribute('type', 'text');
ein.setAttribute('id', this.id + "_cp_ein");
ein.style.width = '20%';
ein.style.cssFloat = 'right';
this.controlPanel.appendChild(ein);
this.einPika = new Pikaday({
field: ein,
firstDay: 1,
minDate: new Date('2001-01-01'),
maxDate: new Date(nowDTStr),
yearRange: [2001, nowDT.getFullYear()]
});
this.einPika.setDate(nowDTStr);
由于我将 sinPika 和 einPika 对象作为成员添加到我的类中,因此它们可以在我的类中的其他地方以其他方法访问,其中 Pika 对象用于获取用户设置的日期。唯一的问题是该解决方案不适用于我的 Chrome-Android。任何人都可以尝试让我知道你发现了什么?谢谢!
编辑
我发现了为什么 Pikaday 没有为我开发 chrome-android 的问题。原因是 pikaday.js ( https://github.com/dbushell/Pikaday/blob/master/pikaday.js ) 与这里的http://dbushell.github.io/Pikaday/不同,因为区别在于附加mousedown、touchend事件。github 上的 Pikaday.js 附件如下:
addEvent(self.el, 'ontouchend' in document ? 'ontouchend' : 'mousedown', self._onMouseDown, true);
(我认为,Javascript 定义touchend
不是ontouchend
,可能是,这就是来自 github repo 的 Pikaday.js 不起作用的原因。)
dbushell.github.io/Pikaday 上的附件如下:
addEvent(self.el, 'mousedown', self._onMouseDown, true);
使用来自http://dbushell.github.io/Pikaday/的脚本可以在 chrome-android 上运行,而 git repo 上的脚本则不能。