我正在我的一个项目中使用平板拾取器.我的场景是,我有一个使用平板拾取器的范围日期选取器.在我 Select 了一个日期范围之后,我有了另一个日期 Select 器,其中所有选定的日期都被选中并变为绿色.现在,每当我想要从所选日期中取消 Select 某个日期时,该日期应该会变为红色.如果我 Select 取消选中的那个,它应该会再次变成绿色.
以下是日期 Select 器的html代码:
<div class="column-2 w-100 w-100 d-flex justify-content-between">
<p class="w-25 fs-6 fw-bold">Operational calendar</p>
<div class="w-75 d-flex gap-3">
<input type="text" name="" class="form-control bg-light" id="dateRangePicker" placeholder="Select date" />
{{-- <input type="date" class="form-control" /> --}}
</div>
</div>
<div class="column-2 w-100 w-100 d-flex justify-content-between">
<p class="w-25 fs-6 fw-bold">Opening and closing dates</p>
<div class="w-75 d-flex gap-3">
<input type="hidden" name="" />
<div id="dateRangePicker2" class="w-100"></div>
{{-- <input type="date" class="form-control" /> --}}
</div>
</div>
以下是该脚本的代码:
document.addEventListener("DOMContentLoaded", function () {
var dateRangePicker = document.getElementById("dateRangePicker");
var dateRangePicker2 = document.getElementById("dateRangePicker2");
var picker = flatpickr(dateRangePicker, {
mode: "range",
dateFormat: "d-m-Y",
onChange: function (selectedDates) {
updateMultiDatePicker(selectedDates);
},
});
var picker2 = flatpickr(dateRangePicker2, {
mode: "multiple",
dateFormat: "Y-m-d",
open: true,
inline: true,
allowInput: true,
onChange: function (selectedDates) {
updateDeselectedDates(selectedDates);
},
});
function updateMultiDatePicker(selectedDates) {
const allDates = document.querySelectorAll("#dateRangePicker2 .flatpickr-day");
allDates.forEach(function (el) {
el.classList.add("blabla");
});
// console.log(allDates)
if (selectedDates.length === 2) {
var startDate = selectedDates[0];
var endDate = selectedDates[1];
var datesToUpdate = [];
var currentDate = new Date(startDate);
while (currentDate <= endDate) {
datesToUpdate.push(new Date(currentDate));
currentDate.setDate(currentDate.getDate() + 1);
}
picker2.setDate(datesToUpdate);
}
}
function updateDeselectedDates(selectedDates) {
const allSelectedDates = document.querySelectorAll(".flatpickr-day.selected");
// allSelectedDates.addClass
allSelectedDates.forEach(function (dateElement) {
dateElement.classList.add("blabla");
if (!dateElement.classList.contains("blabla")) {
dateElement.addEventListener("click", function () {
dateElement.classList.add("deselected");
});
}
const dateString = dateElement.getAttribute("aria-label");
const isSelected = selectedDates.includes(dateString);
// if (isSelected) {
// if (!dateElement.classList.contains('selected')) {
// dateElement.classList.add('deselected');
// } else {
// dateElement.classList.remove('deselected');
// }
// }
});
}
});
因此,正如您所看到的绿色日期,当它们被取消 Select 时,应该会变成红色.这就是我想要的,到目前为止我已经有了.