【问题标题】:jQuery Datepicker only show Mondays and disable certain MondaysjQuery Datepicker 仅显示星期一并禁用某些星期一
【发布时间】:2012-03-05 07:09:51
【问题描述】:

我在尝试合并仅显示星期一以及禁用 jQuery 日期选择器的 beforeShowDay 参数上的特定日期时遇到问题...我希望用户只能选择星期一,2012 年 2 月 20 日除外和 2/27/2012 但不知道如何实现这个...

    <script type="text/javascript">
        var unavailableDates = ["20-02-2012", "27-12-2012"];
        function unavailable(date) {
        dmy = (date.getDay() == 1);
        if ($.inArray(dmy, unavailableDates) == -1) {
            return [true, ""];
        } else {
            return [false, "", "Unavailable"];
        }
        }
    </script>
    <script type="text/javascript">
       $(function () {
          $("#datepicker").datepicker({
            beforeShowDay: unavailable,
            minDate: 0
          });
       });
    </script>

【问题讨论】:

    标签: javascript jquery date user-interface datepicker


    【解决方案1】:

    您需要将传入的日期与另一个日期对象进行比较。相反,您将它与字符串数组中的项目进行比较。

    我会使用 valueOfgetTime,它们返回自 UTC 1 月 1 日以来的毫秒数来进行比较:

    var unavailableDates = [
        new Date(2012, 1, 20).valueOf(),
        new Date(2012, 1, 27).valueOf()
    ];
    
    function unavailable(date) {
        if (date.getDay() === 1 && $.inArray(date.valueOf(), unavailableDates) < 0) {
            return [true, ""];
        } else {
            return [false, "", "Unavailable"];
        }
    }
    
    $(document).ready(function() {
        $("#date").datepicker({
            beforeShowDay: unavailable
        });
    });​
    

    示例: http://jsfiddle.net/aThZG/

    【讨论】:

    • 太棒了,这很好用。不过,我确实有一个问题。当指定月份为 1 月 (1) 时,以下内容为何禁用 2 月 20 日和 27 日? new Date(2012, 1, 20).valueOf()
    • 因为Date 构造函数的month 参数是从0 开始的。有关详细信息,请参阅 Date 文档。
    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 2011-04-17
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多