Skip to content

Commit 7c7e53a

Browse files
committed
Add jump action which click is not this month.
1 parent 80c9432 commit 7c7e53a

File tree

1 file changed

+45
-15
lines changed

1 file changed

+45
-15
lines changed

calendar.js

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,25 @@ var DatePicker;
44
"use strict";
55

66
/**
7-
* 日历组件
8-
*
9-
* @param config {el: HTMLElement, default: '2017-04-11' | '2017-04'}
7+
* 日历组件
8+
* @param config {target: DOM, defaultDate: '2017-04-15', selectInterval: [2000, 2020]}
109
* @constructor
1110
*/
1211
function Calendar(config) {
1312

1413
this.target = config.el;
1514
this.defaultDate = config.default || 'today';
1615
this.selectInterval = config.interval || [1970, 2030];
16+
// 当前日历数据
1717
this.nonceYear = 0;
1818
this.nonceMonth = 0;
1919
this.nonceDay = 0;
2020

21+
// 选中的数据
22+
this.selectedYear = 0;
23+
this.selectedMonth = 0;
24+
// 日期数组
25+
this.renderDate = [];
2126
this.init();
2227
}
2328

@@ -46,7 +51,7 @@ var DatePicker;
4651
addClass: function (el, className) {
4752

4853
var ol = el.className;
49-
if (ol.split(' ').indexOf(className) == -1) {
54+
if (ol.split(' ').indexOf(className) === -1) {
5055
el.className = ol + " " + className;
5156
}
5257

@@ -134,6 +139,9 @@ var DatePicker;
134139
self.nonceDay = relate[2] || 1;
135140
}
136141
}
142+
// 设置选中的默认年份与月份
143+
self.selectedYear = self.nonceYear;
144+
self.selectedMonth = self.nonceMonth;
137145
self._setDateList();
138146

139147

@@ -186,6 +194,7 @@ var DatePicker;
186194
};
187195
renderList.push(obj);
188196
}
197+
this.renderDate = renderList;
189198

190199
this._doRender(renderList);
191200
},
@@ -196,20 +205,25 @@ var DatePicker;
196205
*/
197206
_doRender: function (arr) {
198207

199-
var date = "<ul class='weekTip'>" +
200-
"<li class='weekend'>日</li>" +
201-
"<li>一</li>" +
202-
"<li>二</li>" +
203-
"<li>三</li>" +
204-
"<li>四</li>" +
205-
"<li>五</li>" +
206-
"<li class='weekend'>六</li>" +
207-
"</ul>";
208+
var self = this,
209+
date = "<ul class='weekTip'>" +
210+
"<li class='weekend'>日</li>" +
211+
"<li>一</li>" +
212+
"<li>二</li>" +
213+
"<li>三</li>" +
214+
"<li>四</li>" +
215+
"<li>五</li>" +
216+
"<li class='weekend'>六</li>" +
217+
"</ul>";
208218
date += "<ul class='date'>";
209219
arr.forEach(function (ele, ind) {
210220
var line = Math.floor(ind / 6);
211221
if (!ele.isInner)
212222
date += "<li class='disabled'>" + ele.num + "</li>";
223+
else if (ele.num === self.nonceDay &&
224+
self.nonceMonth === self.selectedMonth &&
225+
self.nonceYear === self.selectedYear)
226+
date += "<li class='abled active'>" + ele.num + "</li>";
213227
else if (!(ind % 7) || ind === line * 6 + line - 1)
214228
date += "<li class='weekend'>" + ele.num + "</li>";
215229
else
@@ -313,9 +327,25 @@ var DatePicker;
313327
function (t) {
314328
// 父元素不是ul.date时跳出
315329
if (!t.parentNode.classList.contains('date')) return;
330+
316331
self.nonceDay = +(t.innerHTML);
317-
utils.removeClass(t.parentNode.querySelectorAll('li'), 'active');
318-
utils.addClass(t, 'active');
332+
// 点击的是非本月的日期
333+
var clkId = [].indexOf.call(t.parentElement.children, t);
334+
if (!self.renderDate[clkId].isInner) {
335+
if (self.nonceDay > 15) {
336+
self.selectedMonth = self.nonceMonth - 1;
337+
self._prevMonth();
338+
} else {
339+
self.selectedMonth = self.nonceMonth + 1;
340+
self._nextMonth();
341+
}
342+
} else {
343+
self.selectedMonth = self.nonceMonth;
344+
}
345+
346+
self.selectedYear = self.nonceYear;
347+
348+
self._setDateList();
319349
})
320350
});
321351

0 commit comments

Comments
 (0)