亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jquery日歷控件實現方法分享

2019-11-20 20:58:30
字體:
來源:轉載
供稿:網友

注釋掉的是默認的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>
*/

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线亚洲国产精品网| 日韩在线资源网| 亚洲免费视频一区二区| 精品国产乱码久久久久久婷婷| 久久国产一区二区三区| 91视频九色网站| 国产精品美女www爽爽爽视频| 欧美第一页在线| 国产精品18久久久久久首页狼| 亚洲精品国产精品自产a区红杏吧| 国产精品亚洲激情| 久久手机精品视频| 亚洲午夜未满十八勿入免费观看全集| 亚洲欧美成人网| 国产精品私拍pans大尺度在线| 国产亚洲欧美日韩精品| 国内精品模特av私拍在线观看| 亚洲色图第三页| 欧美性色视频在线| 亚洲日本成人网| 热99精品只有里视频精品| 日韩成人在线电影网| 久久精品电影网| 成人午夜两性视频| 色中色综合影院手机版在线观看| 亚洲天堂网在线观看| 欧美老妇交乱视频| 欧美疯狂xxxx大交乱88av| 日韩成人在线网站| 欧美裸体xxxx极品少妇软件| 奇门遁甲1982国语版免费观看高清| 91免费看片网站| 91精品国产自产在线老师啪| 色老头一区二区三区| 国产美女久久精品香蕉69| 亚洲色图色老头| 5566成人精品视频免费| 伊人成人开心激情综合网| 亚洲视频在线视频| 国产精品男女猛烈高潮激情| 97香蕉久久超级碰碰高清版| 欧洲成人免费aa| 亚洲精品456在线播放狼人| 国产精品高潮呻吟视频| 在线观看91久久久久久| 日本人成精品视频在线| 69久久夜色精品国产7777| 国产精品嫩草影院一区二区| 日韩精品极品在线观看| 国产精品福利在线观看网址| 欧美精品在线免费观看| 国产精品久久久999| 日韩av电影在线网| 亚洲欧美精品一区二区| 琪琪亚洲精品午夜在线| 国产精品夜色7777狼人| 国产日韩av在线播放| 久久手机免费视频| 黑人与娇小精品av专区| 国产成人精品久久二区二区91| 亚洲天堂免费观看| 国产福利精品在线| 亚洲精品xxx| 欧美日韩免费在线| 精品国产欧美一区二区五十路| 国产精品视频999| 永久555www成人免费| 日韩美女免费视频| 亚洲精品一区av在线播放| 久久久久中文字幕2018| 91亚洲精品视频| xxxx欧美18另类的高清| 日韩电影在线观看永久视频免费网站| 成人av资源在线播放| 亚洲free性xxxx护士白浆| 国产自产女人91一区在线观看| 永久555www成人免费| 日韩美女写真福利在线观看| 欧美中文字幕在线观看| 成人性生交大片免费看小说| 亚洲国产欧美在线成人app| 欧美日韩性视频| 岛国av一区二区三区| 91视频免费网站| 国产亚洲精品久久久久久777| 欧美在线一区二区三区四| 姬川优奈aav一区二区| 两个人的视频www国产精品| 国产成人a亚洲精品| 亚洲最新av网址| 高清一区二区三区四区五区| 欧美视频在线看| 国产亚洲福利一区| 成人在线精品视频| 亚洲欧美另类人妖| 国产成人激情视频| 精品久久香蕉国产线看观看gif| 色爱av美腿丝袜综合粉嫩av| 亚洲第一天堂无码专区| 成人午夜小视频| 欧美成人小视频| 国产精品99蜜臀久久不卡二区| www.国产精品一二区| 综合网日日天干夜夜久久| 精品少妇一区二区30p| 欧美做受高潮1| 久久影院免费观看| 亚洲国产成人爱av在线播放| 欧美在线一级视频| 国产精品扒开腿爽爽爽视频| 亚洲综合中文字幕在线观看| 国产精品电影久久久久电影网| 欲色天天网综合久久| 精品久久久久久亚洲精品| 欧美日韩在线视频观看| 一区二区中文字幕| 97视频网站入口| 日本精品久久电影| 992tv成人免费影院| 欧美午夜片在线免费观看| 国产不卡av在线| 欧美一区二粉嫩精品国产一线天| 中文国产亚洲喷潮| 国产激情综合五月久久| 日韩欧美国产中文字幕| 人人做人人澡人人爽欧美| 久久久噜噜噜久噜久久| 国产精品老女人精品视频| 日韩小视频在线观看| 日韩电影中文字幕在线| 亚洲欧美精品中文字幕在线| 日产日韩在线亚洲欧美| 97在线视频免费| 琪琪亚洲精品午夜在线| 欧美自拍视频在线| 2019日本中文字幕| 久久这里只有精品视频首页| 久久久久久久一| 菠萝蜜影院一区二区免费| 久久男人的天堂| 成人伊人精品色xxxx视频| 久久成年人免费电影| 亚洲视频一区二区| 色综合久久悠悠| 91精品久久久久久久久久久久久| 国语自产在线不卡| 日韩免费av在线| 欧美成人精品影院| 亚洲国产精品美女| 精品久久久久久国产91| 国产精品都在这里| 久久精品国产一区| 色av中文字幕一区| 亚洲天堂男人天堂女人天堂| 亚洲精品电影网| 亚洲精品日韩av| 大桥未久av一区二区三区| 狠狠色香婷婷久久亚洲精品| 国产成人鲁鲁免费视频a| 日韩电影免费观看中文字幕| 国产精品久久久久7777婷婷| 777国产偷窥盗摄精品视频| 亚洲福利视频二区| 日韩在线免费观看视频|