• dateTimePicker日期时间插件-----限定节假日调休的可选择性


    需求:在项目中需要一款这样的日期插件,可以选择年月日,时分秒,对法定节假日不能选择,因法定节假日进行的调休可以选择;

            现在使用的比较多的日期插件比如:Wdatepicker,jqueryUI的datepicker,都有周六天的限制选择,但是不能满足上述需求,所以在这里对jqUI的datepicker进行扩增,实现上述功能,并对IE8进行兼容处理,如图所示:

    代码连接:https://github.com/ilikecandice/dateTimePicker/tree/master

    html部分:

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4 <meta charset="utf-8">
     5 <title>日期时间选择器:datetimepicker</title>
     6 <meta name="keywords" content="datetimepicker, jquery" />
     7 <meta name="description" content="datetimepicker" />
     8 
     9 <link rel="stylesheet" type="text/css" href="css/jquery-ui.css" />
    10 <link rel="stylesheet" href="css/main.css">
    11 
    12 <script type="text/javascript" src="js/jquery.js"></script>
    13 <script type="text/javascript" src="js/jquery-ui.js"></script>
    14 <script type="text/javascript" src="js/jquery-ui-slide.min.js"></script>
    15 <script type="text/javascript" src="js/jquery-ui-timepicker-addon.js"></script>
    16 <script src="js/main.js"></script>
    17 <script type="text/javascript">
    18 
    19  $(document).ready(function (){
    20    $(function(){
    21       $("input[node-type='datepicker']").datetimepicker({
    22          dateFormat: "yy-mm-dd",
    23          timeFormat: 'hh:mm:ss',
    24          showSecond:true,
    25          firstDay:0,
    26       beforeShowDay: noWeekendsOrHolidays
    27       });
    28 
    29   });
    30 });
    31 </script>
    32 </head>
    33 
    34 <body>
    35 <div id="header">
    36    <div id="logo"><h1><a href="javascript:void;" >dateTimepicker</a></h1></div>
    37 </div>
    38 <div id="main">
    39    <div class="demo">
    40       <p><input type="text" id="example_1" node-type='datepicker'/></p>
    41    </div>
    42    </div>
    43 
    44 </body>
    45 </html>

    main.js部分

     1 var natDays = ["2015-01-02","2016-10-07","2016-10-03","2016-10-06"];//节假日
     2   var restDayss = ["2016-10-09","2016-10-12"];//调休日期
     3 
     4  /*
     5   IE8下new Date();的兼容性
     6    */
     7 function parseISO8601(dateStringInRange) {
     8     var isoExp = /^s*(d{4})-(dd)-(dd)s*$/,
     9         date = new Date(NaN), month,
    10         parts = isoExp.exec(dateStringInRange);
    11 
    12     if (parts) {
    13         month = +parts[2];
    14         date.setFullYear(parts[1], month - 1, parts[3]);
    15         if (month != date.getMonth() + 1) {
    16             date.setTime(NaN);
    17         }
    18     }
    19     return date;
    20 }
    21   function nationalDays(date) {
    22 
    23     var holiDays = (function () {
    24     var val = null;
    25     // $.ajax({
    26     //     'async': false,
    27     //     'global': false,
    28     //     'url': 'getdate.json',
    29     //     'success': function (data) {
    30     //         val = data;
    31     //     }
    32     // });
    33     return val;
    34     })();
    35 
    36     var m = date.getMonth();
    37     var d = date.getDate();
    38     var y = date.getFullYear();
    39 
    40     for (var i = 0; i < natDays.length; i++) {
    41     //var myDate = new Date(natDays[i]);
    42     var myDate = parseISO8601(natDays[i]);
    43       if ((m == (myDate.getMonth())) && (d == (myDate.getDate())) && (y == (myDate.getFullYear())))
    44       {
    45 
    46         return [false,""];
    47       }
    48     }
    49     return [true,""];
    50   }
    51 
    52   function restDays(date){
    53     var m = date.getMonth();
    54     var d = date.getDate();
    55     var y = date.getFullYear();
    56    for(var i = 0;i<restDayss.length;i++){
    57 
    58       var date1 = parseISO8601(restDayss[i]);
    59 
    60     if ((m == (date1.getMonth())) && (d == (date1.getDate())) && (y == (date1.getFullYear())))
    61       {
    62 
    63         return [true];
    64       }
    65    }
    66     return [false];
    67 }
    68 
    69 
    70   function noWeekendsOrHolidays(date) {
    71 
    72     var noWeekend = $.datepicker.noWeekends(date);
    73 
    74       if (noWeekend[0]) {
    75 
    76         return nationalDays(date);
    77       } else{
    78 
    79             return noWeekend && restDays(date);
    80 
    81     }
    82   }
       
       
  • 相关阅读:
    新零售的舞台上,创业者如何与大象共舞
    无人零售的黑科技:RFID技术
    中台服务架构的一点思考
    大中台+小前台概念
    如何根据对象的属性,对集合(list / set)中的对象进行排序
    fzu 1075 分解素因子
    POJ 1442 Black Box(优先队列)
    Linux正則表達式-定位元字符
    排序算法之希尔排序
    人工神经网络简单介绍
  • 原文地址:https://www.cnblogs.com/candice-cc/p/6088276.html
Copyright © 2020-2023  润新知