javascript - 从 Mysql 中选择日期以使用引导程序 datepicker
问题描述
我正在尝试从 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.'};
}
}
});
解决方案
渲染时,这一行:
var user_busy_days = '<?php echo $event; ?>';
变成
var user_busy_days = '["2019-12-01", "2019-12-02"]';
它被包裹在一个字符串中,因此检查$.inArray(calender_date, user_busy_days);
是检查字符串中的字符而不是数组中的字符串。
去掉'
souser_busy_days
就变成了一个数组:
var user_busy_days = <?php echo $event; ?>;
额外的:
假设 php 日期输出为 2020-01-01(示例仅显示 2 位数月份),该代码(date.getMonth()+1)
还需要 1-9 个月的 0+slice 技巧
推荐阅读
- java - 使用 MAC OS Netbeans12 Tomcat 9.0 构建失败
- python - 气流 2 - ModuleNotFoundError:没有名为“airflow.operators.text_processing_plugin”的模块
- javascript - 在引导轮播中加载多个谷歌图表
- css - 用 transform 缩放一段 html 并修正高度
- r - 循环遍历数据表列并应用 glm
- wordpress - 如何从 Wordpress 管理员的所有帖子中删除(隐藏)搜索框?
- odoo - 如何在表单上创建一个包含多个 url 的字段
- pcfdev - 如何使应用程序的不同实例读取要处理的不同文件?
- visual-studio-code - 什么是复合任务中的“问题匹配器”?
- c# - 为什么基本身份验证在 C# web api 中不起作用