在 jQuery 日历中突出显示数据库中的日期

Posted

技术标签:

【中文标题】在 jQuery 日历中突出显示数据库中的日期【英文标题】:Highlighting dates from database in a jQuery calendar 【发布时间】:2014-09-15 14:17:55 【问题描述】:

我使用 Keith Wood 出色的 jQuery Datepicker。

日历链接到数据库。

在从同一个数据库中选择日期后,当日历显示为弹出窗口(点击相关输入字段后)时,这些日期会在日历中正确突出显示,使用以下代码:

<input type="text" id="datepicker" name="datephp" value="<?php echo $allgluedatesok;?>"> 
<script>
    $( "#datepicker" ).calendarsPicker(
            inline:true,
            multiSelect: 999,
            monthsToShow: 2
    );
</script>

为了更好的可用性,总是显示这个日历当然更好。 在这种情况下,当我使用以下代码时,日期不会突出显示...

<div id="datepicker"></div>
<input type="hidden" id="hiddenFieldIDphp" name="datephp" value="<?php echo $allgluedatesok;?>"> 

<script>
    $( "#datepicker" ).calendarsPicker(
            inline:true,
            multiSelect: 999,
            monthsToShow: 2,
            altField : '#hiddenFieldIDphp'
    );
</script>

有人知道我在这里做错了什么吗?

【问题讨论】:

【参考方案1】:

当您像这样将 Keith Wood 的 datepick 日历链接到 altField 时,似乎只有 datepick 对象会更新 altField 而不是相反...

因此,当您将日期放在输入的 value 属性中时,datepick 日历不会触发任何事件,但是,当您在内联日历中选择日期时,输入会正确更新。

因此解决方案是使用您的 PHP 的结果在 javascript 中手动设置 datepick 日历的日期:

<script>
    $( "#datepicker" ).calendarsPicker(
        inline:true,
        multiSelect: 999,
        monthsToShow: 2,
        altField : '#hiddenFieldIDphp'
    );
    $( "#datepicker" ).calendarsPicker('setDate',<?php echo $commaseparatedDateStrings; ?>);
</script>

但请注意,PHP 字符串 $commaseparatedDateStrings 现在必须是以下类型:'07/31/2014','08/01/2014','08/02/2014'(带引号!)等等,以便正确解析为 javascript 的 'setDate' 函数参数...

PS:我在代码中留下了你的calendarsPicker(),但是当我下载 Keith Wood 的日期选择器时,扩展名为:datepick()...


编辑: 似乎要添加多个日期,您必须使用数组而不是像我上面所说的那样无限传递许多参数......所以'setdate' 的行应该变成:
$("#datepicker").calendarsPicker('setDate',[<?php echo $commaseparatedDateStrings;?>]);

【讨论】:

以上是关于在 jQuery 日历中突出显示数据库中的日期的主要内容,如果未能解决你的问题,请参考以下文章

如何显示带有突出显示日期的 jquery 日历并禁止单击(只读)

基于数据库选择在 ajax 日历控件中突出显示/禁用特定日期

JQuery DatePicker,如何突出显示当前输入的日期?

如何根据事件以不同颜色突出显示日历中的日期?

在 720kb 日历上突出显示日期

使用完整日历突出显示所有月份的特定日期