zoukankan      html  css  js  c++  java
  • 自己写了个日历插件

    <!DOCTYPE html>
    <html>
            <head>
                    <title>日历</title>
                    <meta charset="utf-8">
                    <script src="js/jquery.js"></script>
                    <style>
                            .wdate{position:relative;left:100px;}
                            .rili{border:1px solid #bbb;padding:10px;}
                            .rili{text-align:center;min-200px;100%;max-200px;position:absolute;}
                            .rili .left{float:left;margin-left:20px;display:block;border-top: 10px solid transparent;border-bottom: 10px solid transparent;border-right: 10px solid #000000; 0;height: 0;margin: 0 auto;}
                            .rili .right{float:right;margin-right:20px;display:block;border-top: 10px solid transparent;border-bottom: 10px solid transparent;border-left: 10px solid #000000; 0;height: 0;margin: 0 auto;}
                            .rili .header{height:22px;line-height:22px;90%;margin:0 auto;}
                            .rili .table{margin-top:5px;padding:5px;100%;border-collapse:collapse;}
                            .rili .table th{14%;}
                            .rili .table tr{margin:10px;}
                            .rili .nowd{background:#b1dcfb;border:1px solid #0089ec;}
                            .rili .prev{color:#dddddd;}
                            .rili #hour,.rili #minutes,.rili #seconds{display:none;border:1px solid #bbb;}
                            .rili #seconds{padding:1px 4px;}
                            .rili .nav{float: left;margin-top: 10px;margin-left: 7px;}
                            .rili .nav .choose{border:1px solid #bbb;display:inline-block;padding:1px 13px;}
                            .rili .aleft{float:left;margin-top:15px;text-decoration: none;color: #fff;background: #349E34;font-size: 14px;padding: 5px;border-radius: 3px;}
                            .rili .aright{float:right;margin-top:15px;text-decoration: none;color: #fff;background: #bbb;font-size: 14px;padding: 5px;border-radius: 3px;}
                            .rili .check{background: #090!important;}
                    </style>
            </head>
            <body>
                    <div style="margin:auto;">
                            <input type="text" name="wdate" class="wdate" onClick="initialie('hours')">
                    </div>
                    <script>
                            var patt = new RegExp(/^[0-9]*[1-9][0-9]*$/);
                            function te() {
                                return $(".rili").on("click", ".right,.left", function () {
                                    if ($(".months").is(":hidden") && $(this).hasClass('right')) {
                                        $(".rili .year").html(parseInt($(".rili .year").html()) + 1);
                                    } else if ($(".months").is(":hidden") && $(this).hasClass('left')) {
                                        $(".rili .year").html(parseInt($(".rili .year").html()) - 1);
                                    } else {
                                        var nmonth = transformation($(".rili .month").html(), '2');
                                        var year = parseInt($(".rili .year").html());
                                        var month1 = 0;
                                        if ($(this).hasClass('right')) {
                                            if (nmonth == '12') {
                                                nmonth = '0';
                                                year += 1;
                                            }
                                            month1 = parseInt(nmonth + 1);
                                        } else {
                                            if (nmonth == '1') {
                                                nmonth = '13';
                                                year -= 1;
                                            }
                                            month1 = parseInt(nmonth - 1);
                                        }
                                        var month = transformation(month1, '1');
                                        var days = getDays(month1, year);
                                        if (month1 == 12 || month1 == 1) {
                                            var days2 = getDays(month1, year);
                                        } else {
                                            var days2 = getDays(month1 - 1, year);
                                        }
                                        append(year, month1, days2);
                                    }
                                }), $(".rili").on("dblclick", ".table td", function () {
                                    if (types.type == 'hour') {
                                        $("input[name='wdate']").val($(this).attr("date") + " " + $(".rili .choose .hour").html() + ":" + $(".rili .choose .minutes").html() + ":" + $(".rili .choose .seconds").html());
                                    } else {
                                        $("input[name='wdate']").val($(this).attr("date"));
                                    }
                                }),$(".rili").on("click", ".table td", function () {
                                        $(".rili .table td").each(function(){
                                                $(this).removeClass("check");
                                        })
                                        $(this).addClass("check");
                                }), $(".rili").on("click", ".hour,.minutes,.seconds", function (e) {
                                    e = e || window.event;
                                    if (e.stopPropagation) { //W3C阻止冒泡方法  
                                        e.stopPropagation();
                                    } else {
                                        e.cancelBubble = true; //IE阻止冒泡方法  
                                    }
                                    $("#" + $(this).attr('class')).siblings("div").hide();
                                    $("#" + $(this).attr('class')).css({"display": "block", "position": "absolute", "left": $(".rili .nav .choose").position().left, "bottom": $(".rili").outerHeight() - $(".rili .nav .hour").position().top, "background": "#fff"});
                                }), $(".rili").on("click", ".date", function () {
                                    $(".rili .months,.rili .shi").hide();
                                    var string = '<tr class="td">';
                                    $.each(months, function (i, e) {
                                        if (patt.test(i / 4)) {
                                            string += '<tr class="td">';
                                        }
                                        string += "<td class='mon'>" + e + "</td>";
                                    })
                                    $(".rili .table").empty();
                                    $(".rili .table").append(string).css({"border-collapse":"separate","border-spacing":"0px 10px"});
                                }), $(".rili").on("click", ".mon", function () {
                                    $(".rili .months,.rili .shi").show();
                                    $(".rili .table").css({"border-collapse":"collapse"});
                                    var year = parseInt($(".rili .year").html());
                                    var month = $(this).html();
                                    var month = transformation(month.replace("月", ''), 2);
                                    var days2 = getDays(month, year);
                                    append(year, month, days2);
                                }), $(".rili").on("click", "#hour table td,#minutes table td,#seconds table td", function (e) {
                                    e = e || window.event;
                                    if (e.stopPropagation) { //W3C阻止冒泡方法  
                                        e.stopPropagation();
                                    } else {
                                        e.cancelBubble = true; //IE阻止冒泡方法 
                                    }
                                    $(".rili .choose ." + $(this).parents("div").attr("id")).html($(this).html());
                                }), $("body").on("click", ".rili", function () {
                                    $(".rili #hour,.rili #minutes,.rili #seconds").hide();
                                }), $(".rili").on("mouseover", ".td td", function () {
                                    $(this).css("background", "#b1dcfb");
                                }), $(".rili").on("mouseout", ".td td", function () {
                                    if (!$(this).hasClass("nowd")) {
                                        $(this).css("background", "#fff");
                                    }
                                }),$(".rili").on("click",".aleft",function(){
                                        //alert($(".rili .check").html())
                                        if($(".rili .check").html() == undefined){
                                                $(".rili .table td").trigger("dblclick");
                                        }else{
                                                if (types.type == 'hour') {
                                                    $("input[name='wdate']").val($(".rili .check").attr("date") + " " + $(".rili .choose .hour").html() + ":" + $(".rili .choose .minutes").html() + ":" + $(".rili .choose .seconds").html());
                                                } else {
                                                    $("input[name='wdate']").val($(".rili .check").attr("date"));
                                                }
                                        }
                                        types.status = false;
                                        $(".rili").hide();
                                }),$(".rili").on("click",".aright",function(){
                                        types.status = false;
                                        $(".rili").hide();
                                })
                            }
    
                            var chnNumChar = {
                                一: 1,
                                二: 2,
                                三: 3,
                                四: 4,
                                五: 5,
                                六: 6,
                                七: 7,
                                八: 8,
                                九: 9,
                                十: 10,
                                十一: 11,
                                十二: 12
                            };
                            var months = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一', '十二'];
                            //initialie('hours');//初始化
                            function transformation(num, type) {
                                var month = '';
                                $.each(chnNumChar, function (i, e) {
                                    if (type == '1') {
                                        if (num == e) {
                                            month = i;
                                        }
                                    } else {
                                        if (num == i) {
                                            month = e;
                                        }
                                    }
                                })
                                return month;
                            }
    
                            function getDays(month, year) {
                                var days;
                                if (month == 2) {
                                    days = year % 4 == 0 ? 29 : 28;
                                } else if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
                                    days = 31;
                                } else {
                                    days = 30;
                                }
                                return days;
                            }
    
                            function date(days, week, day2, myDate,day3) {
                                var date2 = new Date();
                                console.log(day3);
                                if(day3 != undefined){
                                        var nowDate = day3;
                                }else{
                                        var nowDate = date2.getDate();
                                }
                                var day1year = myDate.getFullYear();
                                var day1month = myDate.getMonth() + 1;
                                var day1year2 = day1year;
                                var day1month2 = day1month;
                                if (day1month == 1) {
                                    day1month2 = 13;
                                    day1year2 = day1year - 1;
                                } else if (day1month == 12) {
                                    day1month2 = 0;
                                    day1year2 = day1year + 1;
                                }
                                var day3year = date2.getFullYear();
                                var day3month = date2.getMonth() + 1;
                                //console.log(myDate.getFullYear(),myDate.getMonth() + 1,date2.getFullYear(),date2.getMonth() + 1);
                                var num2 = 0;
                                var string = '<tr class="head"><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr><tr class="td">';
                                for (var i = 1; i <= week; i++) {
                                    string += '<td class="prev" date = "' + day1year2 + '-' + (day1month2 - 1) + '-' + (day2 - week + i) + '">' + (day2 - week + i) + '</td>';
                                }
                                for (var i = 1; i <= days; i++) {
                                    if (patt.test((week + i - 1) / 7)) {
                                        string += '<tr class="td">';
                                        num2 += 1;
                                    }
                                    if (i < 10) {
                                        var i2 = '0' + i;
                                    } else {
                                        var i2 = i;
                                    }
                                    if (day1year == day3year && day1month == day3month && i == nowDate) {
                                        string += '<td class="nowd" date = "' + day1year2 + '-' + day1month2 + '-' + i2 + '">' + i + '</td>';
                                    } else {
                                        string += '<td date = "' + day1year2 + '-' + day1month2 + '-' + i2 + '">' + i + '</td>';
                                    }
                                }
                                var num3 = 42 - (week + days);
                                for (var i = 1; i <= num3; i++) {
                                    if (patt.test(((week + days) - num2 * 7 + i - 1) / 7)) {
                                        string += '<tr class="td">';
                                    }
                                    if (i < 10) {
                                        var i2 = '0' + i;
                                    }
                                    string += '<td class="prev" date = "' + day1year2 + '-' + (day1month2 + 1) + '-' + i2 + '">' + i + '</td>';
                                }
                                $(".rili .table").empty();
                                $(".rili .table").append(string);
                            }
    
                            function initialie(hours) {
                                    if(types.status){
                                            return false;
                                    }else{
                                            types.status = true;
                                    }
                                    $(".rili").remove();
                                var string = '<div class="rili"><div class="header"><span class="left"></span><div class="date" style="display:inline-block;"><div class="months" style="display:inline-block;"><span class="month"></span><span>月</span></div> <span class="year"></span></div><span class="right"></span></div><table class="table"></table><div><a href="javascript:;" class="aleft">确定</a><a href="javascript:;" class="aright">取消</a></div></div>';
                                $(".wdate").after(string);
                                $(".rili").css({"position": "absolute", "left": $(".wdate").offset().left, "top": $(".wdate").outerHeight() + $(".wdate").offset().top, "z-index": "1000"});
                                var time = hour();
                                if (hours == 'hours') {
                                    types.aa('hour');
                                    var string2 = '<div class="shi"><div id="hour"><table>
    
    <tr><td>1</td><td>2</td><td>3</td><td>4</td>
    <td>5</td><td>6</td></tr>
    
    <tr><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td></tr>
    
    <tr><td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td></tr>
    
    <tr><td>19</td><td>20</td><td>21</td><td>22</td><td>23</td><td>24</td></tr>
    
    </table></div><div id="minutes"><table>
    
    <tr><td>0</td><td>5</td><td>10</td><td>15</td><td>20</td><td>25</td>
    
    <tr><td>30</td><td>35</td><td>40</td><td>45</td><td>50</td><td>55</td>
    
    </tr></table></div><div id="seconds"><table><tr>
    
    <td>0</td><td>10</td><td>20</td><td>30</td><td>40</td><td>50</td></tr></table></div><nav class="nav">时间 <div class="choose"><span class="hour">' + time.hour + '</span> : <span class="minutes">' + time.minutes + '</span> : <span class="seconds">' + time.seconds + '</span></div></nav></div>';
                                    $(".rili .table").after(string2);
                                }
                                $("body").append(te());
                                var itime = $(".wdate").val();
                                var days = '';
                                if(itime != ''){
                                        itime = itime.split(" ");
                                        days = itime[0].split("-");
                                        var myDate = new Date(itime[0]);
                                }else{
                                        var myDate = new Date();
                                        myDate.setDate(1);
                                }
                                if(types.type && itime != ''){
                                        var xs = itime[1].split(":");
                                        $(".rili .hour").html(xs[0]);
                                        $(".rili .minutes").html(xs[1]);
                                        $(".rili .seconds").html(xs[2]);
                                }
                                var y = myDate.getFullYear();
                                var m = myDate.getMonth() + 1;
                                var m2 = transformation(m, '1');
                                var m3 = myDate.getMonth();
                                var day = getDays(m, y);
                                var day2 = getDays(m3, y);
                                var week = myDate.getDay();
                                var myDate2 = new Date();
                                $(".rili .month").html(m2);
                                $(".rili .year").html(y);
                                date(day, week, day2, myDate2, days[2]);
                            }
    
                            function append(year, month, days2) {
                                $(".rili .year").html(year, 1);
                                $(".rili .month").html(transformation(month, 1));
                                var days = getDays(month, year);
                                if (!days2) {
                                    var days2 = getDays(month, year);
                                }
                                var myDate = new Date(year + '/' + month + '/' + '01');
                                var week = myDate.getDay();
                                date(days, week, days2, myDate);
                            }
    
                            function hour() {
                                var date = new Date();
                                var time = [];
                                time['hour'] = date.getHours();
                                time['minutes'] = date.getMinutes();
                                time['seconds'] = date.getSeconds();
                                return time;
                            }
    
                            var types = {
                                type: '',
                                aa: function (type) {
                                    return this.type = type;
                                }
                            };
                    </script>
            </body>
    </html>
    

      

  • 相关阅读:
    MySQL创建临时表
    mysql存储过程之事务篇
    sqlserver 和MySQL的一些函数的区别
    JBoss7 如何用脚本 启动 和 停止
    Mysql [Err] 1118
    Mysql [Err] 1118
    Javascript两个感叹号的用法(!!)
    Mac上PyCharm运行多进程报错的解决方案
    Mac iTerm2使用lrzsz上传和下载文件
    Linux使用socks代理
  • 原文地址:https://www.cnblogs.com/zjdeblog/p/6651896.html
Copyright © 2011-2022 走看看