📄 calendardateinput_cn.js
字号:
}
// Mouse-over for the previous/next month buttons
function NeighborHover(Cell, Over, DateObj) {
if (Over) {
VirtualButton(Cell, false);
self.status = 'Click to view ' + DateObj.fullName;
}
else {
Cell.style.border = 'buttonface 1px solid';
self.status = '';
}
return true;
}
// Adds/removes days from the day list, depending on the month/year
function FixDayList(DayList, NewDays) {
var DayPick = DayList.selectedIndex + 1;
if (NewDays != DayList.length) {
var OldSize = DayList.length;
for (var k=Math.min(NewDays,OldSize);k<Math.max(NewDays,OldSize);k++) {
(k >= NewDays) ? DayList.options[NewDays] = null : DayList.options[k] = new Option(k+1, k+1);
}
DayPick = Math.min(DayPick, NewDays);
DayList.options[DayPick-1].selected = true;
}
return DayPick;
}
// Resets the year to its previous valid value when something invalid is entered
function FixYearInput(YearField) {
var YearRE = new RegExp('\\d{' + YearField.defaultValue.length + '}');
if (!YearRE.test(YearField.value)) YearField.value = YearField.defaultValue;
}
// Displays a message in the status bar when hovering over the calendar icon
function CalIconHover(Over) {
var Message = (this.isShowing()) ? 'hide' : 'show';
self.status = (Over) ? 'Click to ' + Message + ' the calendar' : '';
return true;
}
// Starts the timer over from scratch
function CalTimerReset() {
eval('clearTimeout(' + this.timerID + ')');
eval(this.timerID + '=setTimeout(\'' + this.objName + '.show()\',' + (HideWait * 1000) + ')');
}
// The timer for the calendar
function DoTimer(CancelTimer) {
if (CancelTimer) eval('clearTimeout(' + this.timerID + ')');
else {
eval(this.timerID + '=null');
this.resetTimer();
}
}
// Show or hide the calendar
function ShowCalendar() {
if (this.isShowing()) {
var StopTimer = true;
this.getCalendar().style.zIndex = --ZCounter;
this.getCalendar().style.visibility = 'hidden';
this.fixSelects(false);
}
else {
var StopTimer = false;
this.fixSelects(true);
this.getCalendar().style.zIndex = ++ZCounter;
this.getCalendar().style.visibility = 'visible';
}
this.handleTimer(StopTimer);
self.status = '';
}
// Hides the input elements when the "blank" month is selected
function SetElementStatus(Hide) {
this.getDayList().style.visibility = (Hide) ? 'hidden' : 'visible';
this.getYearField().style.visibility = (Hide) ? 'hidden' : 'visible';
this.getCalendarLink().style.visibility = (Hide) ? 'hidden' : 'visible';
}
// Sets the date, based on the month selected
function CheckMonthChange(MonthList) {
var DayList = this.getDayList();
if (MonthList.options[MonthList.selectedIndex].value == '') {
DayList.selectedIndex = 0;
this.hideElements(true);
this.setHidden('');
}
else {
this.hideElements(false);
if (this.isShowing()) {
this.resetTimer(); // Gives the user more time to view the calendar with the newly-selected month
this.getCalendar().style.zIndex = ++ZCounter; // Make sure this calendar is on top of any other calendars
}
var DayPick = FixDayList(DayList, GetDayCount(this.picked.yearValue, MonthList.options[MonthList.selectedIndex].value));
this.setPicked(this.picked.yearValue, MonthList.options[MonthList.selectedIndex].value, DayPick);
}
}
// Sets the date, based on the day selected
function CheckDayChange(DayList) {
if (this.isShowing()) this.show();
this.setPicked(this.picked.yearValue, this.picked.monthIndex, DayList.selectedIndex+1);
}
// Changes the date when a valid year has been entered
function CheckYearInput(YearField) {
if ((YearField.value.length == YearField.defaultValue.length) && (YearField.defaultValue != YearField.value)) {
if (this.isShowing()) {
this.resetTimer(); // Gives the user more time to view the calendar with the newly-entered year
this.getCalendar().style.zIndex = ++ZCounter; // Make sure this calendar is on top of any other calendars
}
var NewYear = GetGoodYear(YearField.value);
var MonthList = this.getMonthList();
var NewDay = FixDayList(this.getDayList(), GetDayCount(NewYear, this.picked.monthIndex));
this.setPicked(NewYear, this.picked.monthIndex, NewDay);
YearField.defaultValue = YearField.value;
}
}
// Holds characteristics about a date
function dateObject() {
if (Function.call) { // Used when 'call' method of the Function object is supported
var ParentObject = this;
var ArgumentStart = 0;
}
else { // Used with 'call' method of the Function object is NOT supported
var ParentObject = arguments[0];
var ArgumentStart = 1;
}
ParentObject.date = (arguments.length == (ArgumentStart+1)) ? new Date(arguments[ArgumentStart+0]) : new Date(arguments[ArgumentStart+0], arguments[ArgumentStart+1], arguments[ArgumentStart+2]);
ParentObject.yearValue = ParentObject.date.getFullYear();
ParentObject.monthIndex = ParentObject.date.getMonth();
ParentObject.monthName = MonthNames[ParentObject.monthIndex];
ParentObject.fullName = ParentObject.monthName + ' ' + ParentObject.yearValue;
ParentObject.day = ParentObject.date.getDate();
ParentObject.dayCount = GetDayCount(ParentObject.yearValue, ParentObject.monthIndex);
var FirstDate = new Date(ParentObject.yearValue, ParentObject.monthIndex, 1);
ParentObject.firstDay = FirstDate.getDay();
}
// Keeps track of the date that goes into the hidden field
function storedMonthObject(DateFormat, DateYear, DateMonth, DateDay) {
(Function.call) ? dateObject.call(this, DateYear, DateMonth, DateDay) : dateObject(this, DateYear, DateMonth, DateDay);
this.yearPad = this.yearValue.toString();
this.monthPad = (this.monthIndex < 9) ? '0' + String(this.monthIndex + 1) : this.monthIndex + 1;
this.dayPad = (this.day < 10) ? '0' + this.day.toString() : this.day;
this.monthShort = this.monthName.substr(0,3).toUpperCase();
// Formats the year with 2 digits instead of 4
if (DateFormat.indexOf('YYYY') == -1) this.yearPad = this.yearPad.substr(2);
// Define the date-part delimiter
if (DateFormat.indexOf('/') >= 0) var Delimiter = '/';
else if (DateFormat.indexOf('-') >= 0) var Delimiter = '-';
else var Delimiter = '';
// Determine the order of the months and days
if (/DD?.?((MON)|(MM?M?))/.test(DateFormat)) {
this.formatted = this.dayPad + Delimiter;
this.formatted += (RegExp.$1.length == 3) ? this.monthShort : this.monthPad;
}
else if (/((MON)|(MM?M?))?.?DD?/.test(DateFormat)) {
this.formatted = (RegExp.$1.length == 3) ? this.monthShort : this.monthPad;
this.formatted += Delimiter + this.dayPad;
}
// Either prepend or append the year to the formatted date
this.formatted = (DateFormat.substr(0,2) == 'YY') ? this.yearPad + Delimiter + this.formatted : this.formatted + Delimiter + this.yearPad;
}
// Object for the current displayed month
function displayMonthObject(ParentObject, DateYear, DateMonth, DateDay) {
(Function.call) ? dateObject.call(this, DateYear, DateMonth, DateDay) : dateObject(this, DateYear, DateMonth, DateDay);
this.displayID = ParentObject.hiddenFieldName + '_Current_ID';
this.getDisplay = new Function('return document.getElementById(this.displayID)');
this.dayHover = DayCellHover;
this.goCurrent = new Function(ParentObject.objName + '.getCalendar().style.zIndex=++ZCounter;' + ParentObject.objName + '.setDisplayed(Today.getFullYear(),Today.getMonth());');
if (ParentObject.formNumber >= 0) this.getDisplay().innerHTML = this.fullName;
}
// Object for the previous/next buttons
function neighborMonthObject(ParentObject, IDText, DateMS) {
(Function.call) ? dateObject.call(this, DateMS) : dateObject(this, DateMS);
this.buttonID = ParentObject.hiddenFieldName + '_' + IDText + '_ID';
this.hover = new Function('C','O','NeighborHover(C,O,this)');
this.getButton = new Function('return document.getElementById(this.buttonID)');
this.go = new Function(ParentObject.objName + '.getCalendar().style.zIndex=++ZCounter;' + ParentObject.objName + '.setDisplayed(this.yearValue,this.monthIndex);');
if (ParentObject.formNumber >= 0) this.getButton().title = this.monthName;
}
// Sets the currently-displayed month object
function SetDisplayedMonth(DispYear, DispMonth) {
this.displayed = new displayMonthObject(this, DispYear, DispMonth, 1);
// Creates the previous and next month objects
this.previous = new neighborMonthObject(this, 'Previous', this.displayed.date.getTime() - 86400000);
this.next = new neighborMonthObject(this, 'Next', this.displayed.date.getTime() + (86400000 * (this.displayed.dayCount + 1)));
// Creates the HTML for the calendar
if (this.formNumber >= 0) this.getDayTable().innerHTML = this.buildCalendar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -