zoukankan      html  css  js  c++  java
  • 回忆之日历

    直接看效果点这里

    HTML

    <!DOCTYPE html>
    <html>
    <head lang="zh-CN">
        <meta charset="utf-8">
        <title> 简易多栏日历 </title>
        <link rel="stylesheet" href="calendar.css">
    </head>
    <body>
    <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
    <script src="jquery.calendar.js"></script>
    <script>
    var data = {"2015-01":{"05":{"id":18076,"price":970,"count":8},"11":{"id":18076,"price":970,"count":10},"12":{"id":18075,"price":970,"count":10},"17":{"id":18073,"price":970,"count":10},"30":{"id":18074,"price":970,"count":10},"15":{"id":18077,"price":970,"count":10}},"2014-12":{"11":{"id":18076,"price":970,"count":10},"12":{"id":18075,"price":970,"count":10},"17":{"id":18073,"price":970,"count":10},"30":{"id":18074,"price":970,"count":10},"15":{"id":18077,"price":970,"count":10}}};
    
    // 两个日历
    $.calendar({
        'isDisableMonth': true,
        'col': 2,
        'data': data,
        'callback': function(target){
            alert(target.data('date'));
        }
    });
    
    
    
    </script>
    </body>
    </html>
    View Code

    CSS

    /**
     * @description: 旅游简洁版日历组件
     * @author: jununx@gmail.com
     * @update: 2014/11/7
     */
    
    /* calendar reset */
    .ui-calendar a { text-decoration: none; }
    .ui-calendar ul { margin: 0; padding: 0; }
    .ui-calendar li { list-style: none; }
    .ui-calendar { position: relative; float: left; font-family: arial, 'microsoft yahei', simsun, 'sans-serif'; font-size: 12px; overflow: hidden; clear: both; }
    .ui-calendar-col { float: left; width: 364px; margin-right: 10px; display: inline; }
    .ui-calendar-title,
    .ui-calendar-week { color: #fff; background-color: #669acc; }
    .ui-calendar-bd,
    .ui-calendar-bd { background-color: #fff; }
    
    /* ui-calendar-title */
    .ui-calendar-title { height: 35px; line-height: 35px; font-weight: 700; text-align: center; }
    .ui-calendar-arr { position: absolute; top: 10px; width: 15px; height: 15px; overflow: hidden; text-indent: -999em; }
    .ui-calendar-arr-l { left: 6px; }
    .ui-calendar-arr-r { right: 16px; }
    .ui-calendar-arr i { position: absolute; top: 1px; width: 0; height: 0; font-size: 0; line-height: 0; border-width: 6px; cursor: pointer; }
    .ui-calendar-arr-l i { left: -1px; border-style: dashed solid dashed dashed; border-top-color: transparent; border-right-color: #d5ecff; border-bottom-color: transparent; border-left-color: transparent; }
    .ui-calendar-arr-r i { right: -2px; border-style: dashed dashed dashed solid; border-top-color: transparent; border-right-color: transparent; border-bottom-color: transparent; border-left-color: #d5ecff; }
    /* ui-calendar-week */
    .ui-calendar-week { height: 25px; line-height: 25px; text-align: center; overflow: hidden; }
    .ui-calendar-week li { float: left; width: 50px; }
    
    /* ui-calendar-bd */
    .ui-calendar-bd { overflow: hidden; border: 1px #99c9f1 solid; }
    .ui-calendar-bd-inner { margin: 0 -1px -1px; overflow: hidden; }
    .ui-calendar-item { color: #333; }
    .ui-calendar-item,.ui-calendar-disable { float: left; width: 51px; height: 51px; border-right: 1px #ccc solid; border-bottom: 1px #ccc solid; }
    .ui-calendar-item:hover { background-color: #f4fcff; }
    .ui-calendar-date,.ui-calendar-count,.ui-calendar-price { display: block; line-height: 14px; height: 14px; overflow: hidden; }
    .ui-calendar-date { margin: 5px 0 0 5px; color: #666; }
    .ui-calendar-count,.ui-calendar-price { text-align: right; padding-right: 4px; }
    .ui-calendar-count { line-height: 16px; height: 16px; color: #46b528; }
    .ui-calendar-price { color: #ff9933; }
    .ui-calendar-disable { cursor: default; background-color: #f6f6f6; }
    .ui-calendar-disable .ui-calendar-date { color: #acacac; }
    .ui-calendar-selected { background-color: #e5f7fd; }
    View Code

    JS

    /**
     * @description: 旅游简洁版日历组件,基于jquery 1.7.2开发
     * @author: jununx@gmail.com
     * @update: 2014/11/7
     *
     * @param wrap{object} 要把日历放在哪个盒子里,默认$('body')
     * @param date{object} 指定日期,默认当天,例如:new Date('2014-11-07')
     * @param data{object} 要传入的数据,格式{'年-月': {'日': [余量, 金额]}}
     * @param isDisableMonth{boolean} 日历空白处是否填充上一月/下一月日期
     * @param col{number} 这个日历显示几栏
     * @param callback{function} 点击可选日期执行的函数,有一个参数,参数返回这个对象
     */
    
    ;(function($){
        var methods = {
            init: function(opts){
                this.createCalendar(opts);
            },
            createCalendar: function(opts, isPrevMonth){
                var that = this,
                    changeDate = null,
                    isExist = $('#J_Cal_'+ opts.ID).length,
                    tpl = '<a class="ui-calendar-arr ui-calendar-arr-l" href="javascript:;"><i></i></a><a class="ui-calendar-arr ui-calendar-arr-r" href="javascript:;"><i></i></a>';
                    for(var i = 0; i < opts.col; i++){
                        changeDate = new Date(opts.date.getFullYear(), isPrevMonth ? opts.date.getMonth() + 1 - (opts.col - i) : opts.date.getMonth() + i);
                        tpl += '<div class="ui-calendar-col"><div class="ui-calendar-title">'+ (this.getYearMonthDay(changeDate)) +'</div><ul class="ui-calendar-week"><li>日</li><li>一</li><li>二</li><li>三</li><li>四</li><li>五</li><li>六</li></ul><div class="ui-calendar-bd"><div class="ui-calendar-bd-inner">' + this.createDateItem(changeDate, opts) + '</div></div></div>';
                    }
                !isExist && ( opts.box = $('<div class="ui-calendar" id="J_Cal_'+ opts.ID +'"></div>') );
                opts.box.html(tpl).find('.ui-calendar-item').on('click', function(){
                    opts.callback($(this));
                }).end()
                .find('.ui-calendar-arr-l').on('click', function(){
                    that.chengeMonth(opts, true);
                }).end()
                .find('.ui-calendar-arr-r').on('click', function(){
                    that.chengeMonth(opts, false);
                });
                !isExist && opts.wrap.append(opts.box);
            },
            // 生成日历列表内容
            createDateItem: function(date, opts){
                var resDateItem = [],
                    firstDateDay = this.getFirstDateInMonth(date).getDay(),
                    endDate = this.getLastDateInMonth(date).getDate(),
                    nextMonthEndDate = this.getLastDateInMonth(date, -1).getDate(),
                    searchKey = date.getFullYear() + '-' + this.fillZero(date.getMonth() + 1),
                    searchVal = opts.data[searchKey],
                    searchDate = [],
                    searchDateInfo = [];
                for(var i = 0; i < 42; i++){
                    if(i < firstDateDay || i >= firstDateDay + endDate){
                        if(opts.isDisableMonth){
                            if(i < firstDateDay){
                                resDateItem.push('<a class="ui-calendar-disable"><span class="ui-calendar-date">'+ (nextMonthEndDate - firstDateDay + 1 + i) +'</span></a>');
                            }else{
                                resDateItem.push('<a class="ui-calendar-disable"><span class="ui-calendar-date">'+ (i - endDate - firstDateDay + 1) +'</span></a>');
                            }
                        }else{
                            resDateItem.push('<a class="ui-calendar-disable"></a>');
                        }
                    }else{
                        searchDate = this.fillZero(i - firstDateDay + 1);
                        searchDateInfo = searchVal && searchVal[searchDate];
                        if(searchDateInfo){
                            resDateItem.push('<a data-id="'+searchDateInfo['id']+'" data-date="'+ searchKey + '-' + searchDate +'" class="ui-calendar-item ui-calendar-selected" href="javascript:;"><span class="ui-calendar-date">'+ searchDate +'</span><span class="ui-calendar-count">余'+ (searchDateInfo['count'] > 9 ? '>9' : searchDateInfo['count']) +'</span><span class="ui-calendar-price">&yen;'+ searchDateInfo['price'] +'</span></a>');
                        }else{
                            resDateItem.push('<a data-date="'+ searchKey + '-' + searchDate +'" class="ui-calendar-item" href="javascript:;"><span class="ui-calendar-date">'+ searchDate +'</span></a>');
                        }
                    }
                }
                return resDateItem.join('');
            },
            // 当前时间对象
            getNowDate: function(){
                return new Date();
            },
            // 当月第一天
            getFirstDateInMonth: function (date){
                return new Date(date.getFullYear(), date.getMonth(), 1);
            },
            // 当月最后一天
            getLastDateInMonth: function (date, nextMonthNum){
                return new Date(date.getFullYear(), date.getMonth() + 1 + (nextMonthNum || 0), 0);
            },
            // return xxxx年xx月
            getYearMonthDay: function(date){
                return (date.getFullYear() + '年' + this.fillZero(date.getMonth() + 1) + '月');
            },
            // 个位补0
            fillZero: function(v){
                return v.toString().replace(/^(d)$/, '0$1');
            },
            /**
             * 切换月份
             * @param opts{object} 传入日历的参数
             * @param isPrevMonth{boolean} 是否是上一个月
             */
            chengeMonth: function(opts, isPrevMonth){
                var month = isPrevMonth ? opts.date.getMonth() - 1 : opts.date.getMonth() + 1;
                opts.date = new Date(opts.date.getFullYear(), month);
                this.createCalendar(opts, isPrevMonth);
            }
        };
        $.calendar = $.fn.calendar = function(opts){
            opts = $.extend({
                'wrap': $('body'),
                'ID': Math.floor(methods.getNowDate().getTime()),
                'date': methods.getNowDate(),
                'col': 1,
                'isDisableMonth': false,
                'data': {},
                'callback': function(){}
            }, opts || {});
            methods.init(opts);
            return this;
        };
    })(jQuery);
  • 相关阅读:
    危机边缘第五季/全集Fringe迅雷下载
    危机边缘第一季/全集Fringe迅雷下载
    混乱之子第七季/全集Sons of Anarchy迅雷下载
    混乱之子第一季/全集Sons Of Anarchy迅雷下载
    都市侠盗第五季/全集Leverage迅雷下载
    都市侠盗第一季/全集Leverage迅雷下载
    识骨寻踪第十二季/全集Bones迅雷下载
    识骨寻踪第一季/全集Bones迅雷下载
    神盾局特工第四季/全集Agents Of SHIELD迅雷下载
    福尔摩斯基本演绎法第一季/全集Elementary迅雷下载
  • 原文地址:https://www.cnblogs.com/jununx/p/4472908.html
Copyright © 2011-2022 走看看