jQuery日历插件RendezVous.js

版权:原创 更新时间:1年以上
[该文章底部包含文件资源,可根据自己情况,决定是否下载资源使用,时间>金钱,如有需要,立即查看资源]

以下是 jQuery日历插件RendezVous.js 的示例演示效果:

当前平台(PC电脑)
  • 平台:

部分效果截图1:

jQuery日历插件RendezVous.js

部分效果截图2:

jQuery日历插件RendezVous.js

HTML代码(index.html):

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<title>jQuery日历插件RendezVous.js</title>
		<link rel="stylesheet" href="css/syntaxhighlighter/shCore.css">
		<link rel="stylesheet" href="css/syntaxhighlighter/shThemeDefault.css">
		<link rel="stylesheet" href="css/rendezvous.css">
		<link rel="stylesheet" href="css/style.css">
	</head>
	<body>
		<h1 class="text-center">RendezVous.js</h1>
		<h2 class="text-center">Keep calm and Pick a date !</h2>
		<div class="datepicker-demo-block">
			<h3>Simple</h3>

			<h4>Render</h4>
			<div rendezvous></div>

			<h4>HTML</h4>
			<pre class="brush: xml">
				&lt;div rendezvous&gt;&lt;/div&gt;
			</pre>

			<h4>JavaScript</h4>
			<pre class="brush: js">
				// void
			</pre>

			<h4>Css</h4>
			<pre class="brush: css">
				/* void */
			</pre>
		</div>

		<div class="datepicker-demo-block">
			<h3>Configurable</h3>

			<h4>Render</h4>
			<div id="rendez-vous"></div>

			<h4>HTML</h4>
			<pre class="brush: xml">
				&lt;div id="rendez-vous"&gt;&lt;/div&gt;
			</pre>

			<h4>JavaScript</h4>
			<pre class="brush: js">
				var settings = { /* ... */ };
				var callback = function(rdv) { /* ... */ };

				$('#rendez-vous').RendezVous(settings, callback);
			</pre>

			<h4>Css</h4>
			<pre class="brush: css">
				/* void */
			</pre>
		</div>

		<div class="datepicker-demo-block">
			<h3>Default date</h3>

			<h4>Render</h4>
			<div id="rendez-vous-date"></div>

			<h4>HTML</h4>
			<pre class="brush: xml">
				&lt;div id="rendez-vous"&gt;&lt;/div&gt;
			</pre>

			<h4>JavaScript</h4>
			<pre class="brush: js">
				$('#rendez-vous').RendezVous({
					inputEmptyByDefault: false,
					defaultDate: {
						day: 1,    // 1 through 31
						month: 1,  // 0 through 11
						year: 2011 // No limits
					}
				});
			</pre>

			<h4>Css</h4>
			<pre class="brush: css">
				/* void */
			</pre>
		</div>

		<div class="datepicker-demo-block">
			<h3>Custom language <small>(Chinese)</small></h3>

			<h4>Render</h4>
			<div id="rendez-vous-french"></div>

			<h4>HTML</h4>
			<pre class="brush: xml">
				&lt;div id="rendez-vous"&gt;&lt;/div&gt;
			</pre>

			<h4>JavaScript</h4>
			<pre class="brush: js">
                $('#rendez-vous-french').RendezVous({
                    i18n: {
                        calendar: {
                            month: {
                                previous: '上一月',
                                next:     '下一月',
                                up:       '选择月份'
                            },
                            year: {
                                previous: '上一年',
                                next:     '下一年',
                                up:       '选择年份'
                            },
                            decade: {
                                previous: '上十年',
                                next:     '下十年',
                                up:       '选择日期'
                            }
                        },
                        days: {
                            abbreviation: {
                                monday:    '一',
                                tuesday:   '二',
                                wednesday: '三',
                                thursday:  '四',
                                friday:    '五',
                                saturday:  '六',
                                sunday:    '日'
                            },
                            entire: {
                                monday:    '星期一',
                                tuesday:   '星期二',
                                wednesday: '星期三',
                                thursday:  '星期四',
                                friday:    '星期五',
                                saturday:  '星期六',
                                sunday:    '星期日'
                            }
                        },
                        months: {
                            abbreviation:
                            {
                                january:   '一月',
                                february:  '二月',
                                march:     '三月',
                                april:     '四月',
                                may:       '五月',
                                june:      '六月',
                                july:      '七月',
                                august:    '八月',
                                september: '九月',
                                october:   '十月',
                                november:  '十一月',
                                december:  '十二月'
                            },
                            entire: {
                                january:   '一月',
                                february:  '二月',
                                march:     '三月',
                                april:     '四月',
                                may:       '五月',
                                june:      '六月',
                                july:      '七月',
                                august:    '八月',
                                september: '九月',
                                october:   '十月',
                                november:  '十一月',
                                december:  '十二月'
                            }
                        }
                    }
                });
			</pre>

			<h4>Css</h4>
			<pre class="brush: css">
				/* void */
			</pre>
		</div>

		<div class="datepicker-demo-block">
			<h3>Fullscreen opening</h3>

			<h4>Render</h4>
			<div id="rendez-vous-fullscreen"></div>

			<h4>HTML</h4>
			<pre class="brush: xml">
				&lt;div id="rendez-vous"&gt;&lt;/div&gt;
			</pre>

			<h4>JavaScript</h4>
			<pre class="brush: js">
				$('#rendez-vous').RendezVous();
			</pre>

			<h4>Css</h4>
			<pre class="brush: css">
				#rendez-vous .rendezvous-popup {
					position: fixed;
					left: 0;
					right: 0;
					top: 0;
					bottom: 0;
					background-color: rgba(30, 30, 30, 0.4);
				}
				#rendez-vous .rendezvous-datepicker {
					position: absolute;
					left: 50%;
					top: 50%;
					width: 21em;
					font-size: 1.3em;
					margin-left: -11em;
					margin-top: -8em;
				}
			</pre>
		</div>

		<div class="datepicker-demo-block">
			<h3>Custom date format <small>(e.g. "Thursday 1 January 2015")</small></h3>

			<h4>Render</h4>
			<div id="rendez-vous-format"></div>

			<h4>HTML</h4>
			<pre class="brush: xml">
				&lt;div id="rendez-vous"&gt;&lt;/div&gt;
			</pre>

			<h4>JavaScript</h4>
			<pre class="brush: js">
				$('#rendez-vous').RendezVous({
					formats: {
						display: {
							date: '%Day %d %Month %Y'
						}
					}
				});
			</pre>

			<h4>Css</h4>
			<pre class="brush: css">
				#rendez-vous .rendezvous-input input {
					width: 180px; /* to fit the result in the input */
				}
			</pre>
		</div>

		<div class="datepicker-demo-block">
			<h3>Input split</h3>

			<h4>Render</h4>
			<div id="rendez-vous-split"></div>

			<h4>HTML</h4>
			<pre class="brush: xml">
				&lt;div id="rendez-vous"&gt;&lt;/div&gt;
			</pre>

			<h4>JavaScript</h4>
			<pre class="brush: js">
				$('#rendez-vous').RendezVous({
					splitInput: true,
				});
			</pre>

			<h4>Css</h4>
			<pre class="brush: css">
				#rendez-vous .rendezvous-input input {
					width: 60px; /* to fit the result in the inputs */
				}
			</pre>
		</div>

		<div class="datepicker-demo-block">
			<h3>Catch events</h3>

			<h4>Render</h4>
			<div id="rendez-vous-events"></div>

			<h4>HTML</h4>
			<pre class="brush: xml">
				&lt;div id="rendez-vous"&gt;&lt;/div&gt;
			</pre>

			<h4>JavaScript</h4>
			<pre class="brush: js">
				$('#rendez-vous')
					.on('rendezvous-init', function(event, rdv) {
						console.log('rdv-init');
					})
					.on('rendezvous-open', function(event, rdv) {
						console.log('rdv-open');
					})
					.on('rendezvous-close', function(event, rdv) {
						console.log('rdv-close');
					})
					.on('rendezvous-change', function(event, rdv) {
						console.log('rdv-change');
					})
					.RendezVous();
			</pre>

			<h4>Css</h4>
			<pre class="brush: css">
				/* void */
			</pre>
		</div>

		<div class="datepicker-demo-block">
			<h3>Always open</h3>

			<h4>Render</h4>
			<div id="rendez-vous-open"></div>

			<h4>HTML</h4>
			<pre class="brush: xml">
				&lt;div id="rendez-vous"&gt;&lt;/div&gt;
			</pre>

			<h4>JavaScript</h4>
			<pre class="brush: js">
				$('#rendez-vous').RendezVous({
						canClose: false,
						openByDefault: true
					}
				);
			</pre>

			<h4>Css</h4>
			<pre class="brush: css">
				#rendez-vous .rendezvous-popup {
					position: inherit;
				}
			</pre>
		</div>
		<script src="js/jquery.js"></script>
		<script src="js/syntaxhighlighter/shCore.js"></script>
		<script src="js/syntaxhighlighter/shBrushJScript.js"></script>
		<script src="js/syntaxhighlighter/shBrushXml.js"></script>
		<script src="js/syntaxhighlighter/shBrushCss.js"></script>
		<script src="js/rendezvous.js"></script>
		<script src="js/app.js"></script>
</body>
</html>










JS代码(app.js):

/*www.sucaijiayuan.com*/
SyntaxHighlighter.defaults['toolbar'] = false;
	SyntaxHighlighter.all();
	/* Configurable Datepicker */
$('#rendez-vous').RendezVous();
	/* Default date Datepicker */
$('#rendez-vous-date').RendezVous({
	inputEmptyByDefault:false,defaultDate:{
	day:1,month:1,year:2011}
}
);
	/* Custom language Datepicker */
$('#rendez-vous-french').RendezVous({
	i18n:{
	calendar:{
	month:{
	previous:'上一月',next:'下一月',up:'选择月份'}
,year:{
	previous:'上一年',next:'下一年',up:'选择年份'}
,decade:{
	previous:'上十年',next:'下十年',up:'选择日期'}
}
,days:{
	abbreviation:{
	monday:'一',tuesday:'二',wednesday:'三',thursday:'四',friday:'五',saturday:'六',sunday:'日'}
,entire:{
	monday:'星期一',tuesday:'星期二',wednesday:'星期三',thursday:'星期四',friday:'星期五',saturday:'星期六',sunday:'星期日'}
}
,months:{
	abbreviation:{
	january:'一月',february:'二月',march:'三月',april:'四月',may:'五月',june:'六月',july:'七月',august:'八月',september:'九月',october:'十月',november:'十一月',december:'十二月'}
,entire:{
	january:'一月',february:'二月',march:'三月',april:'四月',may:'五月',june:'六月',july:'七月',august:'八月',september:'九月',october:'十月',november:'十一月',december:'十二月'}
}
}
}
);
	/* Fullscreen opening Datepicker */
$('#rendez-vous-fullscreen').RendezVous();
	/* Custom date format Datepicker */
$('#rendez-vous-format').RendezVous({
	formats:{
	display:{
	date:'%Day %d %Month %Y'}
}
}
);
	/* Input split Datepicker */
$('#rendez-vous-split').RendezVous({
	splitInput:true}
);
	/* Catch events Datepicker */
$('#rendez-vous-events').on('rendezvous-init',function(event,rdv){
	console.log('rdv-init');
}
).on('rendezvous-open',function(event,rdv){
	console.log('rdv-open');
}
).on('rendezvous-close',function(event,rdv){
	console.log('rdv-close');
}
).on('rendezvous-change',function(event,rdv){
	console.log('rdv-change');
}
).RendezVous();
	/* Always open Datepicker */
$('#rendez-vous-open').RendezVous({
	canClose:false,openByDefault:true}
);
	/*www.sucaijiayuan.com*/

JS代码(rendezvous.js):

"use strict";
	(function(scope,root,$){
	function RendezVousNode(_$node,_settings,_callback){
	var self = this;
	var $node;
	var $input;
	var $popup;
	var $datepicker;
	var $navigation;
	var $calendar;
	var defaultI18n ={
	calendar:{
	month:{
	previous:'Previous month',next:'Next month',up:'Select month'}
,year:{
	previous:'Previous year',next:'Next year',up:'Select year'}
,decade:{
	previous:'Previous decade',next:'Next decade',up:'Select day'}
}
,days:{
	abbreviation:{
	monday:'Mon',tuesday:'Tue',wednesday:'Wed',thursday:'Thu',friday:'Fri',saturday:'Sat',sunday:'Sun'}
,entire:{
	monday:'Monday',tuesday:'Tuesday',wednesday:'Wednesday',thursday:'Thursday',friday:'Friday',saturday:'Saturday',sunday:'Sunday'}
}
,months:{
	abbreviation:{
	january:'Jan',february:'Feb',march:'Mar',april:'Apr',may:'May',june:'Jun',july:'Jul',august:'Aug',september:'Sep',october:'Oct',november:'Nov',december:'Dec'}
,entire:{
	january:'January',february:'February',march:'March',april:'April',may:'May',june:'June',july:'July',august:'August',september:'September',october:'October',november:'November',december:'December'}
}
}
;
	var defaultTemplates ={
	container:'<div class="%prefix-input">'+'%input'+'</div>'+''+'<div class="%prefix-popup">'+'%datepicker'+'</div>',input:{
	default:'<input class="%prefix-input-date" type="text"%readonly>',split:'<input class="%prefix-input-day" type="text"%readonly>'+'%inputSeparator'+'<input class="%prefix-input-month" type="text"%readonly>'+'%inputSeparator'+'<input class="%prefix-input-year" type="text"%readonly>',}
,datepicker:'<div class="%prefix-datepicker">'+''+'<nav class="%prefix-datepicker-navigation">'+''+ // Current Navigation is append here'</nav>'+''+'<section class="%prefix-datepicker-calendar">'+''+ // Current Calendar is append here'</section>'+''+'</div>',navigation:'<button class="%prefix-datepicker-navigation-action %prefix-datepicker-navigation-previous" title="%scalePrevious">'+'&laquo;
	'+'</button>'+'<button class="%prefix-datepicker-navigation-action %prefix-datepicker-navigation-up" title="%scaleUp">'+'%scaleValue'+'</button>'+'<button class="%prefix-datepicker-navigation-action %prefix-datepicker-navigation-next" title="%scaleNext">'+'&raquo;
	'+'</button>',calendar:{
	month:'<header class="%prefix-datepicker-calendar-header">'+'<abbr class="%prefix-datepicker-calendar-title %prefix-datepicker-calendar-week-day" title="%mondayEntire">'+'%mondayAbbreviation'+'</abbr>'+'<abbr class="%prefix-datepicker-calendar-title %prefix-datepicker-calendar-week-day" title="%tuesdayEntire">'+'%tuesdayAbbreviation'+'</abbr>'+'<abbr class="%prefix-datepicker-calendar-title %prefix-datepicker-calendar-week-day" title="%wednesdayEntire">'+'%wednesdayAbbreviation'+'</abbr>'+'<abbr class="%prefix-datepicker-calendar-title %prefix-datepicker-calendar-week-day" title="%thursdayEntire">'+'%thursdayAbbreviation'+'</abbr>'+'<abbr class="%prefix-datepicker-calendar-title %prefix-datepicker-calendar-week-day" title="%fridayEntire">'+'%fridayAbbreviation'+'</abbr>'+'<abbr class="%prefix-datepicker-calendar-title %prefix-datepicker-calendar-week-day" title="%saturdayEntire">'+'%saturdayAbbreviation'+'</abbr>'+'<abbr class="%prefix-datepicker-calendar-title %prefix-datepicker-calendar-week-day" title="%sundayEntire">'+'%sundayAbbreviation'+'</abbr>'+'</header>'+''+'<div class="%prefix-datepicker-calendar-body">'+''+ // Current Values are append here'</div>',year:'<div class="%prefix-datepicker-calendar-body">'+''+ // Current Values are append here'</div>',decade:'<div class="%prefix-datepicker-calendar-body">'+''+ // Current Values are append here'</div>',}
,value:{
	default:'<button class="%prefix-datepicker-calendar-value %prefix-datepicker-calendar-%valueClass">'+'%valueDisplay'+'</button>',selected:'<button class="%prefix-datepicker-calendar-selected-value %prefix-datepicker-calendar-%valueClass">'+'%valueDisplay'+'</button>',dummy:'<span class="%prefix-datepicker-calendar-dummy-value %prefix-datepicker-calendar-%valueClass">'+'%valueDisplay'+'</span>'}
}
;
	var today = new Date();
	var settings ={
	canClose:true,openByDefault:false,splitInput:false,inputReadOnly:true,inputEmptyByDefault:true,inputSeparator:' / ',firstDayOfTheWeek:'monday',defaultScale:'month',formats:{
	display:{
	day:'%D',month:'%Month',year:'%Y',date:'%D %Month %Y'}
,data:{
	day:'%D',month:'%M',year:'%Y',date:'%Y-%M-%D'}
}
,prefixes:{
	class:'rendezvous-',event:'rendezvous-',data:'rendezvous-',}
,defaultDate:{
	day:today.getDate(),month:today.getMonth(),year:today.getFullYear()}
,i18n:defaultI18n,templates:defaultTemplates,internationalWeekOrder:['sunday','monday','tuesday','wednesday','thursday','friday','saturday'],internationalYearOrder:['january','february','march','april','may','june','july','august','september','october','november','december']}
;
	var popupIsVisible = false;
	var displayedDate ={
}
;
	var currentDate ={
}
;
	var calendars ={
	current:'month',order:['month','year','decade'],scales:{
	month:{
	title:'%Month %Y',values:'day',min:1,max:function(){
	return lastDayOfTheMonth(displayedDate.month,displayedDate.year).getDate();
}
,dummy:function(){
	var firstDay = firstDayOfTheMonth(displayedDate.month,displayedDate.year);
	return dummyDaysCount(firstDay);
}
,format:false,isSelected:function(day){
	return displayedDate.year == currentDate.year && displayedDate.month == currentDate.month && day == currentDate.day;
}
}
,year:{
	title:'%Y',values:'month',min:0,max:11,dummy:0,format:function(value){
	return i18nMonth(value);
}
,isSelected:function(month){
	return displayedDate.year == currentDate.year && month == currentDate.month;
}
}
,decade:{
	title:'%X0 - %X9',values:'year',min:function(){
	return decade(displayedDate.year).start;
}
,max:function(){
	return decade(displayedDate.year).end;
}
,dummy:0,format:false,isSelected:function(year){
	return year == currentDate.year;
}
}
}
}
;
	var formatFunctions ={
	month:function(date){
	return i18nMonth(date.getMonth()).toLowerCase();
}
,Month:function(date){
	return i18nMonth(date.getMonth());
}
,mo:function(date){
	return i18nMonthAbbreviation(date.getMonth()).toLowerCase();
}
,Mo:function(date){
	return i18nMonthAbbreviation(date.getMonth());
}
,m:function(date){
	return date.getMonth() + 1;
}
,M:function(date){
	return prefixWithZero(date.getMonth() + 1);
}
,day:function(date){
	return i18nDay(date.getDay()).toLowerCase();
}
,Day:function(date){
	return i18nDay(date.getDay());
}
,da:function(date){
	return i18nDayAbbreviation(date.getDay()).toLowerCase();
}
,Da:function(date){
	return i18nDayAbbreviation(date.getDay());
}
,d:function(date){
	return date.getDate();
}
,D:function(date){
	return prefixWithZero(date.getDate());
}
,y:function(date){
	var year = date.getFullYear().toString();
	return year.substr(year.length - 2);
}
,Y:function(date){
	return date.getFullYear();
}
,x0:function(date){
	var currentDecadeStart = decade(date.getFullYear()).start;
	return buildString('%y',new Date(currentDecadeStart,1,1));
}
,X0:function(date){
	var currentDecadeStart = decade(date.getFullYear()).start;
	return buildString('%Y',new Date(currentDecadeStart,1,1));
}
,x9:function(date){
	var currentDecadeEnd = decade(date.getFullYear()).end;
	return buildString('%y',new Date(currentDecadeEnd,1,1));
}
,X9:function(date){
	var currentDecadeEnd = decade(date.getFullYear()).end;
	return buildString('%Y',new Date(currentDecadeEnd,1,1));
}
}
;
	var recursiveMap = function(object,callback){
	for(var property in object){
	if(object.hasOwnProperty(property)){
	if(typeof object[property] == 'object'){
	recursiveMap(object[property],callback);
}
else{
	object[property] = callback(object[property]);
}
}
}
}
var prefixWithZero = function(value){
	if(value < 10){
	return '0'+value;
}
return value;
}
var i18nMonth = function(month){
	var monthKey = settings.internationalYearOrder[month];
	return settings.i18n.months.entire[monthKey];
}
var i18nMonthAbbreviation = function(month){
	var monthKey = settings.internationalYearOrder[month];
	return settings.i18n.months.abbreviation[monthKey];
}
var i18nDay = function(day){
	var dayKey = settings.internationalWeekOrder[day];
	return settings.i18n.days.entire[dayKey];
}
var i18nDayAbbreviation = function(day){
	var dayKey = settings.internationalWeekOrder[day];
	return settings.i18n.days.abbreviation[dayKey];
}
var firstDayOfTheMonth = function(month,year){
	return new Date(year,month,1);
}
var lastDayOfTheMonth = function(month,year){
	return new Date(year,month + 1,0);
}
var decade = function(year){
	var decadeStart = Math.floor(year / 10) * 10;
	var decadeEnd = decadeStart + 9;
	return{
	start:decadeStart,end:decadeEnd}
;
}
var dummyDaysCount = function(date){
	var dummyDaysCount = date.getDay() - settings.internationalWeekOrder.indexOf(settings.firstDayOfTheWeek);
	if(dummyDaysCount < 0){
	dummyDaysCount += 7;
}
return dummyDaysCount;
}
var prefixEvent = function(event){
	return settings.prefixes.event+event;
}
var prefixData = function(data){
	return settings.prefixes.data+data;
}
var prefixClass = function(selector){
	return settings.prefixes.class+selector;
}
var buildString = function(str,date){
	while(str.indexOf('%') != -1){
	var indexOfNextReplace = str.indexOf('%')for(var format in formatFunctions){
	if(str.indexOf('%'+format) == indexOfNextReplace){
	str = str.replace('%'+format,formatFunctions[format](date));
	break;
}
}
}
return str;
}
var buildValue = function(valueClass,valueDisplay,valueData,valueTemplate){
	var value = settings.templates.value[valueTemplate].replace('%valueClass',valueClass).replace('%valueDisplay',valueDisplay);
	var $value = $(value);
	$value.data(prefixData('value'),valueData);
	return $value;
}
var buildValues = function(){
	var $valuesBody = $calendar.find('.'+prefixClass('datepicker-calendar-body'));
	var currentScale = calendars.scales[calendars.current];
	var valueClass = currentScale.values;
	var minLimit = 0var maxLimit = 0;
	var dummyValuesCount = 0;
	if(typeof currentScale.min == 'function'){
	minLimit = currentScale.min();
}
else if(typeof currentScale.min == 'number'){
	minLimit = currentScale.min;
}
if(typeof currentScale.max == 'function'){
	maxLimit = currentScale.max();
}
else if(typeof currentScale.min == 'number'){
	maxLimit = currentScale.max;
}
if(typeof currentScale.dummy == 'function'){
	dummyValuesCount = currentScale.dummy();
}
else if(typeof currentScale.dummy == 'number'){
	dummyValuesCount = currentScale.dummy;
}
// Builds dummy valuesfor(var i = 0;
	i < dummyValuesCount;
	i++){
	$valuesBody.append(buildValue(valueClass,'','','dummy'));
}
// Builds each valuesfor(var i = minLimit;
	i <= maxLimit;
	i++){
	var valueDisplay = i;
	var valueData = i;
	if(typeof currentScale.format == 'function'){
	valueDisplay = currentScale.format(valueDisplay);
}
$valuesBody.append(buildValue(valueClass,valueDisplay,valueData,(currentScale.isSelected(i) ? 'selected':'default')));
}
}
var buildCalendar = function(){
	$calendar.html(settings.templates.calendar[calendars.current]);
	buildValues();
}
var buildNavigation = function(){
	var currentScale = calendars.scales[calendars.current];
	var scaleValue = '';
	// Builds navigation's titleif(typeof currentScale.title == 'function'){
	scaleValue = currentScale.title();
}
else if(typeof currentScale.title == 'string'){
	scaleValue = buildString(currentScale.title,new Date(displayedDate.year,displayedDate.month,displayedDate.day));
}
var currentCalendarI18n = settings.i18n.calendar[calendars.current];
	var navigation = settings.templates.navigation.replace('%scalePrevious',currentCalendarI18n.previous).replace('%scaleNext',currentCalendarI18n.next).replace('%scaleUp',currentCalendarI18n.up).replace('%scaleValue',scaleValue);
	$navigation.html(navigation);
}
var buildTemplate = function(template){
	var prefixRegExp = new RegExp('%prefix-','g');
	var readOnlyRegExp = new RegExp('%readonly','g');
	var inputSeparatorRegExp = new RegExp('%inputSeparator','g');
	var readOnly = (settings.inputReadOnly ? ' readonly':'');
	template = template.replace(prefixRegExp,prefixClass('')).replace(readOnlyRegExp,readOnly).replace(inputSeparatorRegExp,settings.inputSeparator);
	for(var i in settings.internationalWeekOrder){
	var day = settings.internationalWeekOrder[i];
	var abbreviationRegExp = new RegExp('%'+day+'Abbreviation','g');
	var entireRegExp = new RegExp('%'+day+'Entire','g');
	template = template.replace(abbreviationRegExp,i18nDayAbbreviation(i)).replace(entireRegExp,i18nDay(i));
}
return template;
}
var completeSettings = function(customSettings){
	// Complet DatePicker settings if neededif(typeof customSettings == 'object'){
	$.extend(true,settings,customSettings);
}
// Set DatePicker attributes$.extend(currentDate,settings.defaultDate);
	$.extend(displayedDate,settings.defaultDate);
	calendars.current = settings.defaultScale;
	// Build recursively all templatesrecursiveMap(settings.templates,buildTemplate);
	// Build container templatevar input = (settings.splitInput ? settings.templates.input.split:settings.templates.input.default);
	settings.templates.container = settings.templates.container.replace('%input',input).replace('%datepicker',settings.templates.datepicker);
}
var updateInput = function(){
	// Input is set to the selected value in the datepicker (which is "displayedDate")$.extend(currentDate,displayedDate);
	var day = currentDate.day;
	var month = currentDate.month + 1;
	var year = currentDate.year;
	var date = new Date(year,month-1,day);
	var hasChange = false;
	if($node.data(prefixData('day')) != day){
	hasChange = true;
	$input.find('.'+prefixClass('input-day')).val(buildString(settings.formats.display.day,date));
	$node.data(prefixData('day'),buildString(settings.formats.data.day,date));
}
if($node.data(prefixData('month')) != month){
	hasChange = true;
	$input.find('.'+prefixClass('input-month')).val(buildString(settings.formats.display.month,date));
	$node.data(prefixData('month'),buildString(settings.formats.data.month,date));
}
if($node.data(prefixData('year')) != year){
	hasChange = true;
	$input.find('.'+prefixClass('input-year')).val(buildString(settings.formats.display.year,date));
	$node.data(prefixData('year'),buildString(settings.formats.data.year,date));
}
if(hasChange){
	$input.find('.'+prefixClass('input-date')).val(buildString(settings.formats.display.date,date));
	$node.data(prefixData('date'),buildString(settings.formats.data.date,date));
	triggerEvent('change');
}
}
var setDay = function(day){
	var lastDay = lastDayOfTheMonth(displayedDate.month,displayedDate.year).getDate();
	if(day < 1){
	day = 1}
else if(day > lastDay){
	day = lastDay;
}
displayedDate.day = day;
}
var checkDayBounds = function(){
	setDay(displayedDate.day);
}
var previousDay = function(){
	displayedDate.day--;
	if(displayedDate.day == 0){
	previousMonth();
	displayedDate.day = lastDayOfTheMonth(displayedDate.month,displayedDate.year).getDate();
}
}
var nextDay = function(){
	displayedDate.day++;
	if(displayedDate.day > lastDayOfTheMonth(displayedDate.month,displayedDate.year).getDate()){
	nextMonth();
	displayedDate.day = 1;
}
}
var setMonth = function(month){
	if(month < 0){
	month = 0;
}
else if(month > 11){
	month = 11;
}
displayedDate.month = month;
	checkDayBounds();
}
var previousMonth = function(){
	displayedDate.month--;
	if(displayedDate.month == -1){
	previousYear();
	displayedDate.month = 11;
}
checkDayBounds();
}
var nextMonth = function(){
	displayedDate.month++;
	if(displayedDate.month == 12){
	nextYear();
	displayedDate.month = 0;
}
checkDayBounds();
}
var setYear = function(year){
	displayedDate.year = year;
	checkDayBounds();
}
var previousYear = function(){
	displayedDate.year--;
	checkDayBounds();
}
var nextYear = function(){
	displayedDate.year++;
	checkDayBounds();
}
var previousDecade = function(){
	displayedDate.year -= 10;
	checkDayBounds();
}
var nextDecade = function(){
	displayedDate.year += 10;
	checkDayBounds();
}
var onPrevious = function(event){
	if(calendars.current == 'month'){
	previousMonth();
}
else if(calendars.current == 'year'){
	previousYear();
}
else if(calendars.current == 'decade'){
	previousDecade();
}
updateDatepicker();
}
var onNext = function(event){
	if(calendars.current == 'month'){
	nextMonth();
}
else if(calendars.current == 'year'){
	nextYear();
}
else if(calendars.current == 'decade'){
	nextDecade();
}
updateDatepicker();
}
var updateDatepicker = function(){
	buildNavigation();
	buildCalendar();
}
var openDatepicker = function(){
	if(!popupIsVisible){
	$popup.show();
	popupIsVisible = true;
	triggerEvent('open');
}
}
var closeDatepicker = function(forceClosing){
	if(settings.canClose || forceClosing){
	if(popupIsVisible){
	$popup.hide();
	popupIsVisible = false;
	triggerEvent('close');
}
}
resetScale(calendars.order.indexOf(settings.defaultScale));
}
var resetScale = function(index){
	if(typeof index == 'undefined'){
	index = 0;
}
$.extend(displayedDate,currentDate);
	calendars.current = calendars.order[index];
	updateDatepicker();
}
var setScale = function(scale){
	calendars.current = scale;
	updateDatepicker();
}
var onInit = function(){
	triggerEvent('init');
	updateDatepicker();
	if(!settings.inputEmptyByDefault){
	updateInput();
}
if(settings.openByDefault){
	openDatepicker();
}
}
/*www.sucaijiayuan.com*/
var onRequestToFocus = function(event){
	$input.find('input').first().focus();
}
var onRequestToOpen = function(event){
	openDatepicker();
}
var onRequestToClose = function(event,force){
	closeDatepicker();
}
var onScaleUp = function(event){
	var newScale = calendars.order.indexOf(calendars.current) + 1;
	if(newScale == calendars.order.length){
	resetScale();
}
else{
	setScale(calendars.order[newScale]);
}
}
var onScaleDown = function(event){
	var newScale = calendars.order.indexOf(calendars.current) - 1;
	var newValue = $(this).data(prefixData('value'));
	if(calendars.current == 'month'){
	displayedDate.day = newValue;
}
else if(calendars.current == 'year'){
	displayedDate.month = newValue;
}
else if(calendars.current == 'decade'){
	displayedDate.year = newValue;
}
if(newScale == -1){
	updateInput();
	closeDatepicker();
	updateDatepicker();
}
else{
	setScale(calendars.order[newScale]);
}
}
var triggerEvent = function(event){
	$node.trigger(prefixEvent(event),self);
}
var preventDefault = function(event){
	event.preventDefault();
}
var build = function(_$node){
	$node = _$node;
	$node.addClass(prefixClass('container'));
	$node.append($(settings.templates.container));
	$input = $node.find('.'+prefixClass('input'));
	$popup = $node.find('.'+prefixClass('popup'));
	$datepicker = $node.find('.'+prefixClass('datepicker'));
	$navigation = $node.find('.'+prefixClass('datepicker-navigation'));
	$calendar = $node.find('.'+prefixClass('datepicker-calendar'));
	$input.on('click focus','input',onRequestToOpen);
	$input.on('blur','input',onRequestToClose);
	$datepicker.on('mousedown',preventDefault);
	$datepicker.on('click','.'+prefixClass('datepicker-navigation-previous'),onPrevious);
	$datepicker.on('click','.'+prefixClass('datepicker-navigation-next'),onNext);
	$datepicker.on('click','.'+prefixClass('datepicker-navigation-up'),onScaleUp);
	$datepicker.on('click','.'+prefixClass('datepicker-calendar-value')+',.'+prefixClass('datepicker-calendar-selected-value'),onScaleDown);
	onInit();
}
self.node = function(){
	return $node;
}
self.settings = function(){
	return settings;
}
self.format = function(str,date){
	return buildString(str,date);
}
self.today = function(){
	return today;
}
self.firstDayOfTheMonth = function(month,year){
	// Decreases the month by 1// (cause JavaScript counts month from 0 to 11 instead of 1 to 12)return firstDayOfTheMonth(month - 1,year).getDate();
}
self.lastDayOfTheMonth = function(month,year){
	// Decreases the month by 1// (cause JavaScript counts month from 0 to 11 instead of 1 to 12)return lastDayOfTheMonth(month - 1,year).getDate();
}
self.setDay = function(day){
	setDay(day);
	updateInput();
	updateDatepicker();
}
self.getDay = function(){
	return currentDate.day;
}
self.previousDay = function(){
	previousDay();
	updateInput();
	updateDatepicker();
}
self.nextDay = function(){
	nextDay();
	updateInput();
	updateDatepicker();
}
self.setMonth = function(month){
	// Decreases the month by 1// (cause JavaScript counts month from 0 to 11 instead of 1 to 12)setMonth(month - 1);
	updateInput();
	updateDatepicker();
}
self.getMonth = function(){
	// Increases the month by 1// (cause JavaScript counts month from 0 to 11 instead of 1 to 12)return currentDate.month + 1;
}
self.previousMonth = function(){
	previousMonth();
	updateInput();
	updateDatepicker();
}
self.nextMonth = function(){
	nextMonth();
	updateInput();
	updateDatepicker();
}
self.setYear = function(year){
	setYear(year);
	updateInput();
	updateDatepicker();
}
self.getYear = function(){
	return currentDate.year;
}
self.previousYear = function(){
	previousYear();
	updateInput();
	updateDatepicker();
}
self.nextYear = function(){
	nextYear();
	updateInput();
	updateDatepicker();
}
self.getDecade = function(){
	return decade(currentDate.year);
}
self.previousDecade = function(){
	previousDecade();
	updateInput();
	updateDatepicker();
}
/*www.sucaijiayuan.com*/
self.nextDecade = function(){
	nextDecade();
	updateInput();
	updateDatepicker();
}
self.setDate = function(day,month,year){
	setYear(year);
	// Decreases the month by 1// (cause JavaScript counts month from 0 to 11 instead of 1 to 12)setMonth(month - 1);
	// Set day after "year" and "month",cause day's limits are based on current "year" and "month"setDay(day);
	updateInput();
	updateDatepicker();
}
self.getDate = function(){
	return new Date(currentDate.year,currentDate.month,currentDate.day);
}
self.setScale = function(scale){
	if(calendars.order.indexOf(scale) != -1){
	setScale(scale);
}
}
self.getScale = function(){
	return calendars.current;
}
self.open = function(){
	onRequestToFocus(null);
}
self.close = function(){
	onRequestToClose(null,true);
}
var initialize = function(){
	completeSettings(_settings);
	build(_$node);
	if(typeof _callback == 'function'){
	_callback(self);
}
}
();
}
function RendezVous(){
	var self = this;
	var settings ={
	htmlAttribute:'rendezvous'}
var nodes = [];
	var build = function($node,nodeOptions,nodeCallback){
	new RendezVousNode($node,nodeOptions,nodeCallback);
}
self.build = function($node,nodeOptions,nodeCallback){
	build($node,nodeOptions,nodeCallback);
}
self.autoBuild = function(){
	$(root).find('['+settings.htmlAttribute+']').each(function(){
	build($(this),{
}
);
}
);
}
var initialize = function(){
	self.autoBuild();
}
();
}
scope.RendezVous = new RendezVous();
	$.fn.extend({
	RendezVous:function(options,callback){
	if(typeof options == 'function'){
	callback = options;
	options ={
}
;
}
return this.each(function(){
	scope.RendezVous.build($(this),options,callback);
}
);
}
}
);
	/*www.sucaijiayuan.com*/
}
(this,document,$));
	

CSS代码(rendezvous.css):

.rendezvous-input{text-align:left}
.rendezvous-popup{display:none;position:absolute;z-index:100}
.rendezvous-datepicker{width:16rem;font-size:0.9rem;cursor:default;background-color:#fff;box-shadow:1px 6px 0 -3px #fff,1px 6px 0 -2px rgba(0,0,0,0.14),2px 13px 0 -6px #fff,2px 13px 0 -5px rgba(0,0,0,0.1)}
.rendezvous-datepicker *{box-sizing:border-box;background:none;border:0 none;padding:0;margin:0;font-size:1em;line-height:1.2em;font-family:"microsoft yahei","Helvetica Neue",Helvetica,Arial,sans-serif;overflow:hidden}
.rendezvous-datepicker button::-moz-focus-inner,.rendezvous-datepicker input::-moz-focus-inner{border:0;padding:0}
.rendezvous-datepicker-navigation{background-color:#df3232}
.rendezvous-datepicker-navigation-action{height:2.2em;line-height:2.2em;display:block;float:left;text-align:center;color:#fff}
.rendezvous-datepicker-navigation-action:hover{background-color:#df5454}
.rendezvous-datepicker-navigation-previous,.rendezvous-datepicker-navigation-next{width:25%}
.rendezvous-datepicker-navigation-up{width:50%}
.rendezvous-datepicker-calendar{border:1px solid rgba(0,0,0,0.18);border-top:0 none}
.rendezvous-datepicker-calendar-header{margin-top:0.35em}
.rendezvous-datepicker-calendar-body{margin-top:0.35em;margin-bottom:0.3em}
.rendezvous-datepicker-calendar-title{display:block;float:left;padding:0 0.28em;color:#666;border-bottom:1px dotted #555}
.rendezvous-datepicker-calendar-value,.rendezvous-datepicker-calendar-dummy-value,.rendezvous-datepicker-calendar-selected-value{display:block;float:left;padding:0 0.28em;color:#222}
.rendezvous-datepicker-calendar-value{background-color:#f9f9f9}
.rendezvous-datepicker-calendar-value:hover{color:#000;background-color:#ececec}
.rendezvous-datepicker-calendar-selected-value{background-color:#efefef}
.rendezvous-datepicker-calendar-selected-value:hover{color:#000;background-color:#dfdfdf}
.rendezvous-datepicker-calendar-week-day,.rendezvous-datepicker-calendar-day{width:13.28571%;margin:0.5%}
.rendezvous-datepicker-calendar-week-day{height:1.5em;line-height:1.5em;text-align:center}
.rendezvous-datepicker-calendar-day{height:1.6em;line-height:1.6em;text-align:right}
.rendezvous-datepicker-calendar-month{width:31.33333%;margin:1%;height:1.8em;line-height:1.8em;text-align:center}
.rendezvous-datepicker-calendar-year{width:48%;margin:1%;height:1.8em;line-height:1.8em;text-align:center}
.rendezvous-datepicker-clear{clear:both}
/*www.sucaijiayuan.com*/

CSS代码(style.css):

/* Global style */
html,body{margin:0;padding:0;}
body{background-color:#efefef;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.2em;color:#444;padding:30px;}
input{line-height:1.4em;padding:3px 6px;}
h1{margin-top:0;font-size:2.2em;line-height:1.2em;margin-bottom:0;color:#222;}
h2{font-size:1.4em;line-height:1.2em;}
h3{margin-top:0;font-size:1.5em;line-height:1.2em;}
h4{margin-bottom:0.2em;}
.text-center{text-align:center;}
.datepicker-demo-block{text-align:left;width:720px;padding:30px;background-color:#f9f9f9;box-shadow:0 0 8px rgba(0,0,0,0.02);margin:30px auto 0;}
/* Overwrite SyntaxHighlighter */
.syntaxhighlighter{margin:0 !important;padding:10px 0;max-height:400px;}
/* Fullscreen Datepicker */
#rendez-vous-fullscreen .rendezvous-popup{position:fixed;left:0;right:0;top:0;bottom:0;background-color:rgba(30,30,30,0.4);}
#rendez-vous-fullscreen .rendezvous-datepicker{position:absolute;left:50%;top:50%;width:21em;font-size:1.3em;margin-left:-11em;margin-top:-8em;}
/* Custom date format Datepicker */
#rendez-vous-format .rendezvous-input input{width:180px;}
/* Input split Datepicker */
#rendez-vous-split .rendezvous-input input{width:60px;}
/* Always open Datepicker */
#rendez-vous-open .rendezvous-popup{position:inherit;}
附件:下载该文件资源,减少时间成本(增值服务)
留言
该资源可下载
File Source
.rar
75.78 KB
jquery特效5
最新结算
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
HTML5实现CSS滤镜图片切换特效代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery+css3实现信封效果
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
我们力求给您提供有用的文章,再此基础上,会附加营收资源,不做任何广告,让平台可以更好发展 若您发现您的权利被侵害,或使用了您的版权,请发邮件联系 sunlifel@foxmail.com ggbig觉得 : 不提供源码的文章不是好文章
合作伙伴
联系我们
  • QQ:21499807
  • 邮箱:sunlifel@foxmail.com
  • QQ扫一扫加QQ
    QQ扫一扫
Copyright 2023-2024 ggbig.com·皖ICP备2023004211号-1
打赏文章