⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jquery-calendar.js

📁 Piwik#Opensourcewebanalytics一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大.无色提示:按照需要PHP5.1以上和MySQL数据库支持。
💻 JS
📖 第 1 页 / 共 3 页
字号:
	/* Get a setting value, defaulting if necessary. */	_get: function(name) {		return (this._settings[name] != null ? this._settings[name] : popUpCal._defaults[name]);	},	/* Parse existing date and initialise calendar. */	_setDateFromField: function(input) {		this._input = $(input);		var dateFormat = this._get('dateFormat');		var currentDate = this._input.val().split(dateFormat.charAt(3));		if (currentDate.length == 3) {			this._currentDay = parseInt(currentDate[dateFormat.indexOf('D')], 10);			this._currentMonth = parseInt(currentDate[dateFormat.indexOf('M')], 10) - 1;			this._currentYear = parseInt(currentDate[dateFormat.indexOf('Y')], 10);		}		else {			var date = new Date();			this._currentDay = date.getDate();			this._currentMonth = date.getMonth();			this._currentYear = date.getFullYear();		}		this._selectedDay = this._currentDay;		this._selectedMonth = this._currentMonth;		this._selectedYear = this._currentYear;		this._adjustDate();	},	/* Set the date directly. */	_setDate: function(date) {		this._selectedDay = this._currentDay = date.getDate();		this._selectedMonth = this._currentMonth = date.getMonth();		this._selectedYear = this._currentYear = date.getFullYear();		this._adjustDate();	},	/* Retrieve the date directly. */	_getDate: function() {		return new Date(this._currentYear, this._currentMonth, this._currentDay);	},	/* Generate the HTML for the current state of the calendar. */	_generateCalendar: function() {		var today = this._currentDate;		today = new Date(today.getFullYear(), today.getMonth(), today.getDate()); // clear time		// build the calendar HTML		var controls = '<div class="calendar_control">' +			'<a class="calendar_clear" onclick="popUpCal._clearDate(' + this._id + ');">' +			this._get('clearText') + '</a>' +			'<a class="calendar_close" onclick="popUpCal.hideCalendar(' + this._id + ');">' +			this._get('closeText') + '</a></div>';		var prompt = this._get('prompt');		var closeAtTop = this._get('closeAtTop');		var hideIfNoPrevNext = this._get('hideIfNoPrevNext');		// controls and links		var html = (prompt ? '<div class="calendar_prompt">' + prompt + '</div>' : '') +			(closeAtTop && !this._inline ? controls : '') + '<div class="calendar_links">' +			(this._canAdjustMonth(-1) ? '<a class="calendar_prev" ' +			'onclick="popUpCal._adjustDate(' + this._id + ', -1, \'M\');">' + this._get('prevText') + '</a>' :			(hideIfNoPrevNext ? '' : '<label class="calendar_prev">' + this._get('prevText') + '</label>')) +			(this._isInRange(today) ? '<a class="calendar_current" ' +			'onclick="popUpCal._gotoToday(' + this._id + ');">' + this._get('currentText') + '</a>' : '') +			(this._canAdjustMonth(+1) ? '<a class="calendar_next" ' +			'onclick="popUpCal._adjustDate(' + this._id + ', +1, \'M\');">' + this._get('nextText') + '</a>' :			(hideIfNoPrevNext ? '' : '<label class="calendar_next">' + this._get('nextText') + '</label>')) +			'</div><div class="calendar_header">';		var minDate = this._get('minDate');		var maxDate = this._get('maxDate');		// month selection		var monthNames = this._get('monthNames');		if (!this._get('changeMonth')) {			html += monthNames[this._selectedMonth] + '&nbsp;';		}		else {			var inMinYear = (minDate && minDate.getFullYear() == this._selectedYear);			var inMaxYear = (maxDate && maxDate.getFullYear() == this._selectedYear);			html += '<select class="calendar_newMonth" ' +				'onchange="popUpCal._selectMonthYear(' + this._id + ', this, \'M\');" ' +				'onclick="popUpCal._clickMonthYear(' + this._id + ');">';			for (var month = 0; month < 12; month++) {				if ((!inMinYear || month >= minDate.getMonth()) &&						(!inMaxYear || month <= maxDate.getMonth())) {					html += '<option value="' + month + '"' +						(month == this._selectedMonth ? ' selected="selected"' : '') +						'>' + monthNames[month] + '</option>';				}			}			html += '</select>';		}		// year selection		if (!this._get('changeYear')) {			html += this._selectedYear;		}		else {			// determine range of years to display			var years = this._get('yearRange').split(':');			var year = 0;			var endYear = 0;			if (years.length != 2) {				year = this._selectedYear - 10;				endYear = this._selectedYear + 10;			}			else if (years[0].charAt(0) == '+' || years[0].charAt(0) == '-') {				year = this._selectedYear + parseInt(years[0], 10);				endYear = this._selectedYear + parseInt(years[1], 10);			}			else {				year = parseInt(years[0], 10);				endYear = parseInt(years[1], 10);			}			year = (minDate ? Math.max(year, minDate.getFullYear()) : year);			endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);			html += '<select class="calendar_newYear" onchange="popUpCal._selectMonthYear(' +				this._id + ', this, \'Y\');" ' + 'onclick="popUpCal._clickMonthYear(' +				this._id + ');">';			for (; year <= endYear; year++) {				html += '<option value="' + year + '"' +					(year == this._selectedYear ? ' selected="selected"' : '') +					'>' + year + '</option>';			}			html += '</select>';		}		html += '</div><table class="calendar" cellpadding="0" cellspacing="0"><thead>' +			'<tr class="calendar_titleRow">';		var firstDay = this._get('firstDay');		var changeFirstDay = this._get('changeFirstDay');		var dayNames = this._get('dayNames');		for (var dow = 0; dow < 7; dow++) { // days of the week			html += '<td>' + (!changeFirstDay ? '' : '<a onclick="popUpCal._changeFirstDay(' +				this._id + ', this);">') + dayNames[(dow + firstDay) % 7] +				(changeFirstDay ? '</a>' : '') + '</td>';		}		html += '</tr></thead><tbody>';		var daysInMonth = this._getDaysInMonth(this._selectedYear, this._selectedMonth);		this._selectedDay = Math.min(this._selectedDay, daysInMonth);		var leadDays = (this._getFirstDayOfMonth(this._selectedYear, this._selectedMonth) - firstDay + 7) % 7;		var currentDate = new Date(this._currentYear, this._currentMonth, this._currentDay);		var selectedDate = new Date(this._selectedYear, this._selectedMonth, this._selectedDay);		var printDate = new Date(this._selectedYear, this._selectedMonth, 1 - leadDays);		var numRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate		var customDate = this._get('customDate');		var showOtherMonths = this._get('showOtherMonths');		for (var row = 0; row < numRows; row++) { // create calendar rows			html += '<tr class="calendar_daysRow">';			for (var dow = 0; dow < 7; dow++) { // create calendar days				var customSettings = (customDate ? customDate(printDate) : [true, '']);				var otherMonth = (printDate.getMonth() != this._selectedMonth);				var unselectable = otherMonth || !customSettings[0] ||					(minDate && printDate < minDate) || (maxDate && printDate > maxDate);				html += '<td class="calendar_daysCell' +					((dow + firstDay + 6) % 7 >= 5 ? ' calendar_weekEndCell' : '') + // highlight weekends					(otherMonth ? ' calendar_otherMonth' : '') + // highlight days from other months					//(printDate.getTime() == selectedDate.getTime() ? ' calendar_daysCellOver' : '') + // highlight selected day					(unselectable ? ' calendar_unselectable' : '') +  // highlight unselectable days					(!otherMonth || showOtherMonths ? ' ' + customSettings[1] : '') + // highlight custom dates					(printDate.getTime() == currentDate.getTime() ? ' calendar_currentDay' : // highlight current day					(printDate.getTime() == today.getTime() ? ' calendar_today' : '')) + '"' + // highlight today (if different)					(unselectable ? '' : ' onmouseover="$(this).addClass(\'calendar_daysCellOver\');"' +					' onmouseout="$(this).removeClass(\'calendar_daysCellOver\');"' +					' onclick="popUpCal._selectDay(' + this._id + ', this);"') + '>' + // actions					(otherMonth ? (showOtherMonths ? printDate.getDate() : '&nbsp;') : // display for other months					(unselectable ? printDate.getDate() : '<a>' + printDate.getDate() + '</a>')) + '</td>'; // display for this month				printDate.setDate(printDate.getDate() + 1);			}			html += '</tr>';		}		html += '</tbody></table>' + (!closeAtTop && !this._inline ? controls : '') +			'<div style="clear: both;"></div>' + (!$.browser.msie ? '' :			'<!--[if lte IE 6.5]><iframe src="javascript:false;" class="calendar_cover"></iframe><![endif]-->');		return html;	},	/* Adjust one of the date sub-fields. */	_adjustDate: function(offset, period) {		var date = new Date(this._selectedYear + (period == 'Y' ? offset : 0),			this._selectedMonth + (period == 'M' ? offset : 0),			this._selectedDay + (period == 'D' ? offset : 0));		// ensure it is within the bounds set		var minDate = this._get('minDate');		var maxDate = this._get('maxDate');		date = (minDate && date < minDate ? minDate : date);		date = (maxDate && date > maxDate ? maxDate : date);		this._selectedDay = date.getDate();		this._selectedMonth = date.getMonth();		this._selectedYear = date.getFullYear();	},	/* Find the number of days in a given month. */	_getDaysInMonth: function(year, month) {		return 32 - new Date(year, month, 32).getDate();	},	/* Find the day of the week of the first of a month. */	_getFirstDayOfMonth: function(year, month) {		return new Date(year, month, 1).getDay();	},	/* Determines if we should allow a "next/prev" month display change. */	_canAdjustMonth: function(offset) {		var date = new Date(this._selectedYear, this._selectedMonth + offset, 1);		if (offset < 0) {			date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));		}		return this._isInRange(date);	},	/* Is the given date in the accepted range? */	_isInRange: function(date) {		var minDate = this._get('minDate');		var maxDate = this._get('maxDate');		return ((!minDate || date >= minDate) && (!maxDate || date <= maxDate));	},	/* Format the given date for display. */	_formatDate: function() {		var day = this._currentDay = this._selectedDay;		var month = this._currentMonth = this._selectedMonth;		var year = this._currentYear = this._selectedYear;		month++; // adjust javascript month		var dateFormat = this._get('dateFormat');		var dateString = '';		for (var i = 0; i < 3; i++) {			dateString += dateFormat.charAt(3) +				(dateFormat.charAt(i) == 'D' ? (day < 10 ? '0' : '') + day :				(dateFormat.charAt(i) == 'M' ? (month < 10 ? '0' : '') + month :				(dateFormat.charAt(i) == 'Y' ? year : '?')));		}		return dateString.substring(dateFormat.charAt(3) ? 1 : 0);	}});/* Attach the calendar to a jQuery selection.   @param  settings  object - the new settings to use for this calendar instance (anonymous)   @return jQuery object - for chaining further calls */$.fn.calendar = function(settings, defaultDate) {	return this.each(function() {		// check for settings on the control itself - in namespace 'cal:'		var inlineSettings = null;		for (attrName in popUpCal._defaults) {			var attrValue = this.getAttribute('cal:' + attrName);			if (attrValue) {				inlineSettings = inlineSettings || {};				try {					inlineSettings[attrName] = eval(attrValue);				}				catch (err) {					inlineSettings[attrName] = attrValue;				}			}		}		var nodeName = this.nodeName.toLowerCase();		if (nodeName == 'input') {			var instSettings = (inlineSettings ? $.extend($.extend({}, settings || {}),				inlineSettings || {}) : settings); // clone and customise			var inst = (inst && !inlineSettings ? inst :				new PopUpCalInstance(instSettings, false, defaultDate));			popUpCal._connectCalendar(this, inst);		} 		else if (nodeName == 'div' || nodeName == 'span') {			var instSettings = $.extend($.extend({}, settings || {}),				inlineSettings || {}); // clone and customise			var inst = new PopUpCalInstance(instSettings, true, defaultDate);			popUpCal._inlineCalendar(this, inst, defaultDate);		}	});};/* Initialise the calendar. */$(document).ready(function() {   popUpCal = new PopUpCal(); // singleton instance});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -