javascript - 用于预订系统的 JavaScript 日期选择器
问题描述
我在一个类似于酒店预订系统的网站上工作。用户可以使用该网站预订房间。
这些是不可用的日期:
['2021-11-17', '2021-11-18', '2021-11-19', '2021-11-20', '2021-11-27', '2021-11-28']
在我的日期选择器中,我希望这样做:
- 仅限未来日期,退房日期不得早于入住日期
- 将不可用的日期灰显,使用户无法选择它们
- 如果用户选择在 2021-11-11 入住,则退房选项范围直到 2021-11-16
我现在的 JS:
const dateCheck = ['2021-11-17', '2021-11-18', '2021-11-19', '2021-11-20', '2021-11-27', '2021-11-28']
function disableDates(date) {
var string = jQuery.datepicker.formatDate("yy-mm-dd", date);
return [dateCheck.indexOf(string) == -1]
}
$("#listingCheckIn").datepicker({
beforeShowDay: disableDates,
minDate: 0,
dateFormat: "yy-mm-dd",
showOn: "both",
//upon selection
onSelect: function(dateText, inst) {
$("#listingCheckOut").datepicker("option", "minDate",
$("#listingCheckIn").datepicker("getDate")); //2nd datepicker to set min value for 1st datepicker
}
});
$("#listingCheckOut").datepicker({
beforeShowDay: disableDates,
minDate: 0,
dateFormat: "yy-mm-dd",
onSelect: function(dateText, inst) {
$("#listingCheckOut").datepicker("option", "minDate",
$("#listingCheckIn").datepicker("getDate")); //2nd datepicker to set min value for 1st datepicker
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script>
<form action="booking.php" id="bookingForm" method="post">
<div id="C_rightColumn">
<div class="C_rcTopBox flex-c-c">
Rates
</div>
<div class="C_rcTopBox flex-c-c">
<label>Check-In Date</label>
<input type="text" id="listingCheckIn" name="checkin" class="date">
</div>
<div class="C_rcTopBox flex-c-c">
<label>Check-Out Date</label>
<input type="text" id="listingCheckOut" name="checkout" class="date">
</div>
<div class="C_rcBtmBox">
<button type="submit" class="btn" name="bookProperty">Book Now!</button>
</div>
</div>
</form>
基本上,1 和 2 是可行的,但是我如何实现 3 以便用户必须在其他预订的签入之前签出?提前致谢。
解决方案
推荐阅读
- unity3d - 如何在 Unity2D 中强制拖放对象
- arrays - 检查 2 个数组中的任何值是否相等
- redux-saga - 如何获得`all`效果的输出?
- android - Android 画图 - PorterDuffXfermode SRC_IN 不工作
- python - Yolo 基于区域的输出到 openvino 的解释脚本
- java - 对tomcat的套接字http请求,但响应302
- python - Python Selenium Chrome:打开一个新标签 Ctrl + t(按键盘)
- python - 在 for 循环中启动线程会产生多个结果
- postgresql - SQL 在最大日期左连接
- office365 - office365 图形 api 分配私有组的所有者权限