会议室预定简单功能实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
以下是一个基于jQuery UI的简单预定会议室的页面:
 
```html
<!DOCTYPE html>
<html>
 
<head>
  <meta charset="UTF-8">
  <title>会议室预定</title>
  <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css">
  <style>
    .ui-timepicker-standard {
      font-family: Arial;
      font-size: 14px;
      width: 100%;
    }
 
    .ui-datepicker {
      margin-top: 12px;
    }
 
    .ui-timepicker-list li {
      cursor: pointer;
    }
 
    #availableTimeslots {
      margin-top: 20px;
      border: 1px solid #ccc;
      height: 400px;
      overflow-y: auto;
      padding: 10px;
    }
 
    .timeslot {
      border: 1px solid #ccc;
      padding: 5px;
      margin-bottom: 5px;
      background-color: #f9f9f9;
      cursor: pointer;
    }
 
    .timeslot.unavailable {
      background-color: #ddd;
      cursor: not-allowed;
    }
 
    .timeslot.selected {
      background-color: #428bca;
      color: #fff;
    }
 
    #reserveBtn {
      margin-top: 20px;
      padding: 10px;
      background-color: #428bca;
      color: #fff;
      border: none;
      cursor: pointer;
    }
 
    #reserveBtn:hover {
      background-color: #3071a9;
    }
  </style>
</head>
 
<body>
  <h1>会议室预定</h1>
 
  <div>
    <label for="datepicker">日期:</label>
    <input type="text" id="datepicker">
    <label for="starttimepicker">开始:</label>
    <input type="text" id="starttimepicker">
    <label for="endtimepicker">结束:</label>
    <input type="text" id="endtimepicker">
    <button id="addToCartBtn" disabled>加入预定</button>
  </div>
 
  <div id="availableTimeslots"></div>
 
  <div>
    <button id="reserveBtn" disabled>预定会议室</button>
  </div>
 
  <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
  <script>
    $(document).ready(function () {
      // Datepicker
      $("#datepicker").datepicker({
        minDate: 0,
        onSelect: function (dateText, inst) {
          updateAvailableTimeslots(dateText);
        }
      });
 
      // Timepicker
      $('#starttimepicker,#endtimepicker').timepicker({
        timeFormat: 'HH:mm',
        interval: 30,
        dropdown: true,
        scrollbar: true,
        minTime: '8:00',
        maxTime: '22:00',
        dynamic: false,
        change: function (time) {
          var startTime = $('#starttimepicker').val();
          var endTime = $('#endtimepicker').val();
          // 检查选择的时间段是否在可预定时间范围内
          if (startTime < '8:00' || endTime > '22:00' || startTime >= endTime) {
            $('#startdatepicker,#enddatepicker').val('');
            $('#addToCartBtn').prop('disabled', true);
          } else {
            updateAvailableTimeslots($('#datepicker').val());
          }
        }
      });
 
      // 拖拽选择时间段
      $(document).on('mousedown', '.timeslot',
        function (e) {
          $('.timeslot').removeClass('selected');
          $(this).addClass('selected');
          $('#reserveBtn').prop('disabled', false);
          $('#addToCartBtn').prop('disabled', true);
        }
      );
 
      // 预定会议室
      $('#reserveBtn').on('click', function () {
        var selectedTimeslot = $('.timeslot.selected');
        var date = $('#datepicker').val();
        var startTime = $('#starttimepicker').val();
        var endTime = $('#endtimepicker').val();
        alert(`您预定了 ${date} ${startTime}-${endTime} 的会议室`);
        selectedTimeslot.removeClass('available').addClass('unavailable').removeClass('selected');
        $('#reserveBtn').prop('disabled', true);
      });
    });
 
    function updateAvailableTimeslots(date) {
      $('#availableTimeslots').html('');
      var startTime = $('#starttimepicker').val();
      var endTime = $('#endtimepicker').val();
      if (startTime && endTime) {
        var startHour = parseInt(startTime.split(':')[0]);
        var endHour = parseInt(endTime.split(':')[0]);
        for (var hour = startHour; hour < endHour; hour++) {
          var timeslot = $('<div></div>').addClass('timeslot available');
          timeslot.text(hour + ':00 - ' + (hour + 1) + ':00');
          $('#availableTimeslots').append(timeslot);
        }
      } else {
        $('#addToCartBtn').prop('disabled', true);
      }
    }
  </script>
</body>
 
</html>
```
 
在这个实现中,用户可以选择预定日期和开始结束时间,并在可预定时间范围内拖拽选择时间段。预定按钮将被激活并点击后会展示一个简单的提示信息,并将已选择的时间段设置为不可预定。

  

posted @   今年我十八岁  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示