DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JavaScript綜合知識 >> jquery日歷控件實現方法分享
jquery日歷控件實現方法分享
編輯:JavaScript綜合知識     

 這篇文章主要介紹了jquery日歷控件實現方法,網上有好多這樣的插件,下面是自己實現的一個方法,需要的朋友可以參考下

注釋掉的是默認的css樣式,你可以修改成自己的樣式實現另一個風格,大家參考使用吧    代碼如下: /**  * jQuery Calendar Plugin  */ (function($, window) {       'use strict';     $.fn.calendar = function(options) {         //check is select, if nothing select, return this         if (!this.length) {             if (options && options.debug && window.console) {                 console.log("nothing select");             }             return this;         }         var self = $(this);           // default parameter setting         var defaults = {             cssPath: '', //user-define loading path of css file             eventName: 'click', //user-define the event name that triggers the control             onSelectDate: null, //callback function after select date             autoClose: false         };           //inherit user-defined parameter         defaults = $.extend(defaults, options);           //default as data of the day         var d_date = new Date();         var _date = {             year: d_date.getFullYear(),             month: d_date.getMonth() + 1,             day: d_date.getDate(),             week: d_date.getDay()         };           //default template of plugin         var calendarDiv = '<div id="calendar" class="cld_grid" style="display:none;z-index:100;">';         calendarDiv += '<div id="calendar_year_month" class="cld_year_month" style="position:relative;">';         calendarDiv += '<div id="last-year" style="position:absolute;left:30px;"><</div>';         calendarDiv += '<div id="last-month" style="position:absolute;left:60px;"><<</div>';         calendarDiv += '<div id="next-year" style="position:absolute;right:30px;">></div>';         calendarDiv += '<div id="next-month" style="position:absolute;right:60px;">>></div>';         calendarDiv += '<input style="width:40px;text-align:center;" type="text" id="calendar_year" value="' + _date.year + '">-<input style="width:25px;text-align:center;" type="text" id="calendar_month" value="' + _date.month + '"></div>'         calendarDiv += '<div id="calendar_week_box" class="cld_week_box clearfix">';         calendarDiv += '<div class="header-day" data-index = "0">日</div>';         calendarDiv += '<div class="header-day" data-index = "1">一</div>';         calendarDiv += '<div class="header-day" data-index = "2">二</div>';         calendarDiv += '<div class="header-day" data-index = "3">三</div>';         calendarDiv += '<div class="header-day" data-index = "4">四</div>';         calendarDiv += '<div class="header-day" data-index = "5">五</div>';         calendarDiv += '<div class="header-day" data-index = "6">六</div>';         calendarDiv += '</div>';         calendarDiv += '<div class="days clearfix">';         for (var k = 0; k < 35; k++) {             calendarDiv += '<div class="day"><span class="day-number">' + '' + '</span></div>';         }         calendarDiv += '</div></div>';           var calendarAction = {             //initialization             initAction: function() {                 calendarAction.thisClick();                 calendarAction.inputChange();                 calendarAction.buttonChange();                 calendarAction.chooseDate();             },               //click to display             thisClick: function() {                 self.bind(defaults.eventName, function(e) {                     calendarAction.showCalendar();                 });             },               //when year and month in the input box changes             inputChange: function() {                 $('#calendar_year, #calendar_month').bind('change', function() {                     var year = $('#calendar_year').val(),                         month = $('#calendar_month').val();                     if (!/^d{4}$/.test(year)) {                         alert('please input four-digit year');                         return false;                     }                     if (!/^d{1,2}$/.test(month) || (month > 12 || month <= 0)) {                         alert('please input proper month');                         return false;                     }                     //Initialize after year and month changes                     init_day_numbers(year, month);                 });             },               //click to change year and month             buttonChange: function() {                 $('#last-year').bind('click', function() {                     var lastYear = parseInt($('#calendar_year').val()) - 1 > 0 ? parseInt($('#calendar_year').val()) - 1 : 1;                     $('#calendar_year').val(lastYear);                     init_day_numbers(lastYear, $('#calendar_month').val());                 });                   $('#last-month').bind('click', function() {                     var lastMonth = parseInt($('#calendar_month').val()) - 1 > 0 ? parseInt($('#calendar_month').val()) - 1 : 12,                         thisYear = lastMonth == 12 ? parseInt($('#calendar_year').val()) - 1 : $('#calendar_year').val();                     $('#calendar_month').val(lastMonth);                     $('#calendar_year').val(thisYear);                     init_day_numbers(thisYear, lastMonth);                 });                   $('#next-year').bind('click', function() {                     var nextYear = parseInt($('#calendar_year').val()) + 1;                     $('#calendar_year').val(nextYear);                     init_day_numbers(nextYear, $('#calendar_month').val());                 });                   $('#next-month').bind('click', function() {                     var nextMonth = parseInt($('#calendar_month').val()) + 1 <= 12 ? parseInt($('#calendar_month').val()) + 1 : 1,                         thisYear = nextMonth == 1 ? parseInt($('#calendar_year').val()) + 1 : $('#calendar_year').val();                     $('#calendar_month').val(nextMonth);                     $('#calendar_year').val(thisYear);                     init_day_numbers(thisYear, nextMonth);                 });             },               //set the relative offset between control and webpage, then display             showCalendar: function() {                 var o_x = self.offset().left,                     o_y = self.offset().top + self[0].offsetHeight;                 $('#calendar').css({                     'position': 'absolute',                     'left': o_x,                     'top': o_y,                     'display': 'block'                 });             },               //close plugin             closeCalendar: function() {                 $('#calendar').hide();             },               //select date             chooseDate: function() {                 $('.day').live('click', function() {                     var _date = $(this).attr('data-date');                     //trigger callback function                     if ($.isFunction(defaults.onSelectDate)) {                         defaults.onSelectDate.call(this, _date);                     }                     if (defaults.autoClose) {                         calendarAction.closeCalendar();                     }                 });             }         };           //write calendar template in webpage         $('body').append(calendarDiv);           //initialize the year, month, day of calendar list         init_day_numbers(_date.year, _date.month);           //initialize plugin action         calendarAction.initAction();           function init_day_numbers(year, month) {             var maxday = getmaxDay(year, month),                 firstWeek,beforeNumber,                 startIndex = beforeNumber = firstWeek = getFirstWeek(year, month),                 afterNumber = 35 - maxday - beforeNumber,                 lastMonthMaxDay = getMaxDayByLastMonth(year, month),                 nextMonthMaxDay = getMaxDayByNextMonth(year, month),                 Edge = getLastAndNextDate(year, month);             var default_html = '';             for (var k = 0; k < 35; k++) {                 default_html += '<div class="day"><span class="day-number">' + '' + '</span></div>';             };             $('.days').html(default_html);             for (var s = 1; s <= maxday; s++) {                 $('.day-number').eq(startIndex).text(s);                 $('.day').eq(startIndex).attr('data-date', year + '-' + month + '-' + s);                 if (s == _date.day && year == _date.year && month == _date.month) {                     $('.day').eq(startIndex).addClass('today');                 }                 startIndex++;             };             for (var k = 0; k < beforeNumber; k++) {                 var realDay = lastMonthMaxDay - beforeNumber + k + 1;                 $('.day-number').eq(k).text(realDay);                 $('.day-number').eq(k).addClass('last-month');                 $('.day').eq(k).attr('data-date', Edge.lastY + '-' + Edge.lastM + '-' + realDay);             };             for (var l = 1; l <= afterNumber; l++) {                 var _index = beforeNumber + maxday + (l - 1);                 $('.day-number').eq(_index).text(l);                 $('.day-number').eq(_index).addClass('next-month');                 $('.day').eq(_index).attr('data-date', Edge.nextY + '-' + Edge.nextM + '-' + l);             }         }           function getLastAndNextDate(year, month) {             var lastM = month - 1 > 0 ? month - 1 : 12,                 lastY = lastM == 12 ? year - 1 : year,                 nextM = month + 1 > 12 ? 1 : month + 1,                 nextY = nextM == 1 ? year + 1 : year;             return {                 lastM: lastM,                 lastY: lastY,                 nextM: nextM,                 nextY: nextY             };         }           //obtain what the first day of one month is in a week         function getFirstWeek(year, month) {             var date = new Date(year, month - 1, 1);             return date.getDay();         }           //obtain the year, month, day of today         function getToday() {             var date = new Date();             return today = [date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getDay()];         }           //obtain the number of days for a month         function getmaxDay(year, month) {             var date = new Date(year, month, 0);             return date.getDate();         }           //obtain the number of days for last month         function getMaxDayByLastMonth(year, month) {             month = month - 1 <= 0 ? 12 : month - 1;             year = month == 12 ? year - 1 : year;             return getmaxDay(year, month);         }           //obtain the number of days for next month         function getMaxDayByNextMonth(year, month) {             month = month + 1 > 12 ? 1 : month + 1;             year = month == 1 ? year + 1 : year;             return getmaxDay(year, month);         }           //obtain the days list of a certain year and month, return array         function getDayList(year, month) {             var _list = [],                 maxday = getmaxDay(year, month),                 month = month - 1;             for (var i = 1; i <= maxday; i++) {                 var d = new Date(year, month, i);                 _list[i - 1] = d.getDay();             }             return _list;         }     } })(jQuery, window);   /* <style type="text/css">         *{margin:0;padding:0;font-size:12px;font-family: Inconsolata, Monaco, 'Andale Mono', Courier;}         .cld_grid{width:300px;margin:auto;}         .cld_week_box{background-color:#3883a3;width:100%;}         .header-day{float: left;padding: 10px 0px;width: 14.2857%;text-align: center;color: white;font-family:'微軟雅黑'}         .clearfix:after{content: ".";display: block;clear: both;visibility: hidden;line-height: 0;height: 0;}         .day{float: left;             width: 14.2857%;             height: 13px;             padding: 10px 0;             text-align: center;             color: #4f4f4f;             background-color: #ebebeb;             border-bottom: 2px solid white;             background-image: url('http://kylestetz.github.io/CLNDR/css/./triangle.svg');             background-size: cover;             background-position: center;             cursor: pointer;         }         .days .last-month, .days .next-month {             opacity: 0.3;         }         .days .today{             background:#fff;         }         .cld_year_month{                padding: 10px;             background-color: #71bbd2;             text-align: center;             color: white;             letter-spacing: 1px;             font-size:14px;         }         .cld_year_month div{cursor:pointer;}     </style> */  
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved