我正在尝试从mysql中突出显示datepicker中的所有日期,但无法正常工作,我认为问题出在数组上或我不知道;不知道,问题是当我在user_busy_days变量中写入['2019-12-01 ','2019-12-02'];正在工作,但下面的代码不工作。任何帮助表示赞赏。
PHP:
<?php
$sql = mysqli_query($con,"SELECT dates FROM mls_cereri GROUP BY dates");
$Data= Array();
while ($row = mysqli_fetch_array($sql, MYSQLI_ASSOC))
{
$Data[] = $row['dates'];
}
$event = json_encode($Data);
?>
Javascript:
var user_busy_days = '<?php echo $event; ?>'; // <- Working example: ['2019-12-01','2019-12-02']
$('#to_date').datepicker({
inline: true,
sideBySide: true,
format: "yy-mm-dd",
orientation: "bottom auto",
todayHighlight: true,
autoclose: true,
beforeShowDay: function (date) {
calender_date = date.getFullYear()+'-'+(date.getMonth()+1)+'-'+('0'+date.getDate()).slice(-2);
var search_index = $.inArray(calender_date, user_busy_days);
if (search_index > -1) {
return {classes: 'non-highlighted-cal-dates', tooltip: 'User available on this day.'};
}else{
return {classes: 'highlighted-cal-dates', tooltip: 'User not available on this day.'};
}
}
});
答案 0 :(得分:1)
渲染后,此行:
var user_busy_days = '<?php echo $event; ?>';
成为
var user_busy_days = '["2019-12-01", "2019-12-02"]';
,它包装在字符串中,因此检查$.inArray(calender_date, user_busy_days);
是针对字符串中的字符而不是数组中的字符串进行检查。
删除'
,使user_busy_days
成为数组:
var user_busy_days = <?php echo $event; ?>;
额外:
假设php日期输出为2020-01-01(示例仅显示2位数的月份),则代码(date.getMonth()+1)
在1-9个月内也将需要使用0 + slice技巧