我尝试通过更改类来突出显示保存在DB中的日期数组。为了实现这个目标,我使用了beforeShowDay函数,并且我已经尝试了关于Stack Overflow的所有解决方案。甚至有些看起来很有逻辑,每次出错的时候。
我使用Laravel和jQuery来完成这个目标。我还使用了jQuery-ui DatePicker的multiDatesPicker扩展。
这是我的输入字段:
<input required type="text" name="dates" id="datepicker" class="form-control">
我的<<p> strong> sript :$(document).ready(function() {
var openDates = @json($open_dates);
$( "#datepicker" ).multiDatesPicker({
beforeShowDay: function (date) {
if ($.inArray(date, openDates) !== -1) {
return [true, 'open-date'];
}else {
return [true, ''];
}
}
});
});
和控制器中的代码:
$open_dates_raw = ExcursionDate::where('excursion_id', $excursion->id)->get();
$open_dates = array();
foreach ($open_dates_raw as $d) {
$open_dates[] = $d->date; /*It is a DATE, not DATETIME column*/
}
return view("view.name", [
...
'open_dates' => $open_dates,
... ]);
基本上,我认为在$中的东西。inArray(日期、openDates)因为我尝试了很多不同的选项,但仍然没有找到匹配。
当我console.log日期时变量在beforeShowDay我得到这个:
...
Tue Mar 30 2021 00:00:00 GMT+0300 (EEST)
...
当我console.log打开endates变量,它显示了一个数组,看起来像这样:
(4) ["2021-03-10 00:00:00", "2021-03-17 00:00:00", "2021-03-24 00:00:00", "2021-03-31 00:00:00"]
我也试图操纵这个输出从控制器得到:
(4) ["2021-03-10 ", "2021-03-17", "2021-03-24", "2021-03-31"]
或者
(4) ["2021-3-10 ", "2021-3-17", "2021-3-24", "2021-3-31"]
那么现在回到脚本-我尝试了不同的选项,如
if ($.inArray(date.toString(), openDates) !== -1)
或者
if ($.inArray(openDates, date) !== -1)
我也试过改变控制器:
$open_dates = ExcursionDate::where('excursion_id', $excursion->id)->pluck('date');
but still nothing.
任何想法吗?
我不知道你的openDates的确切格式,但我知道里面的值是字符串,所以我把日期转换成字符串,像这样:
beforeShowDay: function(date) {
var str_date = $.datepicker.formatDate( "yy-mm-dd", date);
//console.log(str_date);
if ($.inArray(str_date, openDates) !== -1) {
return [true, 'open-date'];
} else {
return [true, ''];
}
}
您可以按照openDates
中的日期格式更改格式