📄 datepicker.js
字号:
if(dojo.html.hasClass(currentCalendarNode,this.classNames.selectedDate)){ this.selectedNode = currentCalendarNode; } nextDate = dojo.date.add(nextDate, dojo.date.dateParts.DAY, 1); } this.lastDay = dojo.date.add(nextDate,dojo.date.dateParts.DAY,-1); this._initControls(); }, _initControls: function(){ var d = this.firstDay; var d2 = this.lastDay; var decWeek, incWeek, decMonth, incMonth, decYear, incYear; decWeek = incWeek = decMonth = incMonth = decYear = incYear = !this.staticDisplay; with(dojo.date.dateParts){ var add = dojo.date.add; if(decWeek && add(d,DAY,(-1*(this._getAdjustedDay(d)+1)))<this.startDate){ decWeek = decMonth = decYear = false; } if(incWeek && d2>this.endDate){ incWeek = incMonth = incYear = false; } if(decMonth && add(d,DAY,-1)<this.startDate){ decMonth = decYear = false; } if(incMonth && add(d2,DAY,1)>this.endDate){ incMonth = incYear = false; } if(decYear && add(d2,YEAR,-1)<this.startDate){ decYear = false; } if(incYear && add(d,YEAR,1)>this.endDate){ incYear = false; } } function enableControl(node, enabled){ dojo.html.setVisibility(node, enabled ? '' : 'hidden'); } enableControl(this.decreaseWeekNode,decWeek); enableControl(this.increaseWeekNode,incWeek); enableControl(this.decreaseMonthNode,decMonth); enableControl(this.increaseMonthNode,incMonth); enableControl(this.previousYearLabelNode,decYear); enableControl(this.nextYearLabelNode,incYear); }, _incrementWeek: function(evt) { var d = new Date(this.firstDay); switch(evt.target) { case this.increaseWeekNode.getElementsByTagName("img").item(0): case this.increaseWeekNode: var tmpDate = dojo.date.add(d, dojo.date.dateParts.WEEK, 1); if(tmpDate < this.endDate){ d = dojo.date.add(d, dojo.date.dateParts.WEEK, 1); } break; case this.decreaseWeekNode.getElementsByTagName("img").item(0): case this.decreaseWeekNode: if(d >= this.startDate){ d = dojo.date.add(d, dojo.date.dateParts.WEEK, -1); } break; } this._preInitUI(d,true,true); }, _incrementMonth: function(evt) { var d = new Date(this.curMonth); var tmpDate = new Date(this.firstDay); switch(evt.currentTarget) { case this.increaseMonthNode.getElementsByTagName("img").item(0): case this.increaseMonthNode: tmpDate = dojo.date.add(tmpDate, dojo.date.dateParts.DAY, this.displayWeeks*7); if(tmpDate < this.endDate){ d = dojo.date.add(d, dojo.date.dateParts.MONTH, 1); }else{ var revertToEndDate = true; } break; case this.decreaseMonthNode.getElementsByTagName("img").item(0): case this.decreaseMonthNode: if(tmpDate > this.startDate){ d = dojo.date.add(d, dojo.date.dateParts.MONTH, -1); }else{ var revertToStartDate = true; } break; } if(revertToStartDate){ d = new Date(this.startDate); }else if(revertToEndDate){ d = new Date(this.endDate); } this._preInitUI(d,false,true); }, _incrementYear: function(evt) { var year = this.curMonth.getFullYear(); var tmpDate = new Date(this.firstDay); switch(evt.target) { case this.nextYearLabelNode: tmpDate = dojo.date.add(tmpDate, dojo.date.dateParts.YEAR, 1); if(tmpDate<this.endDate){ year++; }else{ var revertToEndDate = true; } break; case this.previousYearLabelNode: tmpDate = dojo.date.add(tmpDate, dojo.date.dateParts.YEAR, -1); if(tmpDate>this.startDate){ year--; }else{ var revertToStartDate = true; } break; } var d; if(revertToStartDate){ d = new Date(this.startDate); }else if(revertToEndDate){ d = new Date(this.endDate); }else{ d = new Date(year, this.curMonth.getMonth(), 1); } this._preInitUI(d,false,true); }, onIncrementWeek: function(/*Event*/evt) { // summary: handler for increment week event evt.stopPropagation(); if(!this.staticDisplay){ this._incrementWeek(evt); } }, onIncrementMonth: function(/*Event*/evt) { // summary: handler for increment month event evt.stopPropagation(); if(!this.staticDisplay){ this._incrementMonth(evt); } }, onIncrementYear: function(/*Event*/evt) { // summary: handler for increment year event evt.stopPropagation(); if(!this.staticDisplay){ this._incrementYear(evt); } }, _setMonthLabel: function(monthIndex) { this.monthLabelNode.innerHTML = dojo.date.getNames('months', 'wide', 'standAlone', this.lang)[monthIndex]; }, _setYearLabels: function(year) { var y = year - 1; var that = this; function f(n){ that[n+"YearLabelNode"].innerHTML = dojo.date.format(new Date(y++, 0), {formatLength:'yearOnly', locale:that.lang}); } f("previous"); f("current"); f("next"); }, _getDateClassName: function(date, monthState) { var currentClassName = this.classNames[monthState]; //we use Number comparisons because 2 dateObjects never seem to equal each other otherwise if ((!this.selectedIsUsed && this.value) && (Number(date) == Number(this.value))) { currentClassName = this.classNames.selectedDate + " " + currentClassName; this.selectedIsUsed = true; } if((!this.currentIsUsed) && (Number(date) == Number(this.today))) { currentClassName = currentClassName + " " + this.classNames.currentDate; this.currentIsUsed = true; } return currentClassName; }, onClick: function(/*Event*/evt) { //summary: the click event handler dojo.event.browser.stopEvent(evt); }, _handleUiClick: function(/*Event*/evt) { var eventTarget = evt.target; if(eventTarget.nodeType != dojo.dom.ELEMENT_NODE){eventTarget = eventTarget.parentNode;} dojo.event.browser.stopEvent(evt); this.selectedIsUsed = this.todayIsUsed = false; var month = this.curMonth.getMonth(); var year = this.curMonth.getFullYear(); if(dojo.html.hasClass(eventTarget, this.classNames["disabledPrevious"])||dojo.html.hasClass(eventTarget, this.classNames["disabledCurrent"])||dojo.html.hasClass(eventTarget, this.classNames["disabledNext"])){ return; //this date is disabled... ignore it }else if (dojo.html.hasClass(eventTarget, this.classNames["next"])) { month = ++month % 12; if(month===0){++year;} } else if (dojo.html.hasClass(eventTarget, this.classNames["previous"])) { month = --month % 12; if(month==11){--year;} } this.clickedNode = eventTarget; this.setDate(new Date(year, month, eventTarget.innerHTML)); }, onValueChanged: function(/*Date*/date) { //summary: the set date event handler }, _isDisabledDate: function(dateObj){ if(dateObj<this.startDate||dateObj>this.endDate){ return true; } return this.isDisabledDate(dateObj, this.lang); }, isDisabledDate: function(/*Date*/dateObj, /*String?*/locale){ // summary: // May be overridden to disable certain dates in the calendar e.g. isDisabledDate=dojo.date.isWeekend return false; // Boolean }, _initFirstDay: function(/*Date*/dateObj, /*Boolean*/adj){ //adj: false for first day of month, true for first day of week adjusted by startOfWeek var d = new Date(dateObj); if(!adj){d.setDate(1);} d.setDate(d.getDate()-this._getAdjustedDay(d,this.weekStartsOn)); d.setHours(0,0,0,0); return d; // Date }, _getAdjustedDay: function(/*Date*/dateObj){ //summary: used to adjust date.getDay() values to the new values based on the current first day of the week value var days = [0,1,2,3,4,5,6]; if(this.weekStartsOn>0){ for(var i=0;i<this.weekStartsOn;i++){ days.unshift(days.pop()); } } return days[dateObj.getDay()]; // Number: 0..6 where 0=Sunday } });
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -