您的位置:首页 > Web前端 > BootStrap

bootstrap-datepicker插件bug:当天日期偏前或偏后时,选择的日期会出现减少或增加一个月 在选择与今日

2017-11-03 18:25 741 查看
1.问题描述:

当天日期偏前或偏后时,选择与今日日期不再同一个月的日期,会出现减少或增加一个月

a. 当前日期是11月1号  我选择10月30号再选择11月1号。显示的日期会是12月1号,反之如果是30号就会减少一个月

2.问题解决:

查看源代码:bootstrap-datepicker.min.js

click: function(b) {
b.preventDefault(),
b.stopPropagation();
var e, f, g, h, i, j, k;
e = a(b.target),
e.hasClass("datepicker-switch") && this.showMode(1);
var l = e.closest(".prev, .next");
l.length > 0 && (f = r.modes[this.viewMode].navStep * (l.hasClass("prev") ? -1 : 1), 0 === this.viewMode ? (this.viewDate = this.moveMonth(this.viewDate, f), this._trigger("changeMonth", this.viewDate)) : (this.viewDate = this.moveYear(this.viewDate, f), 1 === this.viewMode && this._trigger("changeYear", this.viewDate)), this.fill()),

e.hasClass("today")  && (this.showMode( - 2), this._setDate(d(), "linked" === this.o.todayBtn ? null: "view")),

e.hasClass("clear") && this.clearDates(),

e.hasClass("disabled") || (e.hasClass("day") && (g = parseInt(e.text(), 10) || 1, h = this.viewDate.getUTCFullYear(), i = this.viewDate.getUTCMonth(), e.hasClass("old") && (0 === i ? (i = 11, h -= 1, j = !0, k = !0) : (i -= 1, j = !0)), e.hasClass("new") && (11 === i ? (i = 0, h += 1, j = !0, k = !0) : (i += 1, j = !0)), this._setDate(c(h, i, g)), k && this._trigger("changeYear", this.viewDate), j && this._trigger("changeMonth", this.viewDate)), e.hasClass("month") && (this.viewDate.setUTCDate(1), g = 1, i = e.parent().find("span").index(e), h = this.viewDate.getUTCFullYear(), this.viewDate.setUTCMonth(i), this._trigger("changeMonth", this.viewDate), 1 === this.o.minViewMode ? (this._setDate(c(h, i, g)), this.showMode()) : this.showMode( - 1), this.fill()), (e.hasClass("year") || e.hasClass("decade") || e.hasClass("century")) && (this.viewDate.setUTCDate(1), g = 1, i = 0, h = parseInt(e.text(), 10) || 0, this.viewDate.setUTCFullYear(h), e.hasClass("year") && (this._trigger("changeYear", this.viewDate), 2 === this.o.minViewMode && this._setDate(c(h, i, g))), e.hasClass("decade") && (this._trigger("changeDecade", this.viewDate), 3 === this.o.minViewMode && this._setDate(c(h, i, g))), e.hasClass("century") && (this._trigger("changeCentury", this.viewDate), 4 === this.o.minViewMode && t
4000
his._setDate(c(h, i, g))), this.showMode( - 1), this.fill())),

this.picker.is(":visible") && this._focused_from && a(this._focused_from).focus(),
delete this._focused_from
},
修改成:

click: function(b) {
b.preventDefault(),
b.stopPropagation();
var e, f, g, h, i, j, k;
e = a(b.target),
e.hasClass("datepicker-switch") && this.showMode(1);
var l = e.closest(".prev, .next");
l.length > 0 && (f = r.modes[this.viewMode].navStep * (l.hasClass("prev") ? -1 : 1), 0 === this.viewMode ? (this.viewDate = this.moveMonth(this.viewDate, f), this._trigger("changeMonth", this.viewDate)) : (this.viewDate = this.moveYear(this.viewDate, f), 1 === this.viewMode && this._trigger("changeYear", this.viewDate)), this.fill()),
//原因是最后选择今日 又处于上个月或者下个月(old是上个月,new是下个月)的时候  算月份的时候加重复了。
e.hasClass("today") && !e.hasClass("old") && !e.hasClass("new") && (this.showMode( - 2), this._setDate(d(), "linked" === this.o.todayBtn ? null: "view")),

e.hasClass("clear") && this.clearDates(),

e.hasClass("disabled") || (e.hasClass("day") && (g = parseInt(e.text(), 10) || 1, h = this.viewDate.getUTCFullYear(), i = this.viewDate.getUTCMonth(), e.hasClass("old") && (0 === i ? (i = 11, h -= 1, j = !0, k = !0) : (i -= 1, j = !0)), e.hasClass("new") && (11 === i ? (i = 0, h += 1, j = !0, k = !0) : (i += 1, j = !0)), this._setDate(c(h, i, g)), k && this._trigger("changeYear", this.viewDate), j && this._trigger("changeMonth", this.viewDate)), e.hasClass("month") && (this.viewDate.setUTCDate(1), g = 1, i = e.parent().find("span").index(e), h = this.viewDate.getUTCFullYear(), this.viewDate.setUTCMonth(i), this._trigger("changeMonth", this.viewDate), 1 === this.o.minViewMode ? (this._setDate(c(h, i, g)), this.showMode()) : this.showMode( - 1), this.fill()), (e.hasClass("year") || e.hasClass("decade") || e.hasClass("century")) && (this.viewDate.setUTCDate(1), g = 1, i = 0, h = parseInt(e.text(), 10) || 0, this.viewDate.setUTCFullYear(h), e.hasClass("year") && (this._trigger("changeYear", this.viewDate), 2 === this.o.minViewMode && this._setDate(c(h, i, g))), e.hasClass("decade") && (this._trigger("changeDecade", this.viewDate), 3 === this.o.minViewMode && this._setDate(c(h, i, g))), e.hasClass("century") && (this._trigger("changeCentury", this.viewDate), 4 === this.o.minViewMode && this._setDate(c(h, i, g))), this.showMode( - 1), this.fill())),

this.picker.is(":visible") && this._focused_from && a(this._focused_from).focus(),
delete this._focused_from
},
问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐