发现问题
如果设置 bootstrap datetimepicker 为只选择年份
obj.datetimepicker({format: 'yyyy'})
如图1,正确的选择情况鼠标指针应该这样手掌形状的。
但是如果误点击到了多个方块之间的空隙处,例如图3中红框标记处,鼠标形状变成箭头状如图2,就会出现图4所示的错误结果。
而且即使再次点击正确的日期的位置,如果不刷新页面,弹出的选择框已经不能用了,如图4,也无法选择日期了。
解决方案
修改 bootstrap-datetimepicker.js 约第1140行,即
// 添加一个判断
if(typeof(year)=="undefined"&&typeof(month)=="undefined"&&typeof(day)=="undefined"){
return false;
}
// 结束
this._setDate(UTCDate(year, month, day, 0, 0, 0, 0));
this.viewMode = this.startViewMode;
this.showMode(0);
this.fill();
if (this.autoclose) {
this.hide();
}
原理是当用户误点击事件发生时,直接阻止方法继续执行。