【问题标题】:How can I disable a specific date in daterangepicker?如何在 daterangepicker 中禁用特定日期?
【发布时间】:2026-02-08 03:10:01
【问题描述】:

我想在我的 daterangepicker 中禁用日期 9th of September 2017

var date = new Date();
var currentMonth = date.getMonth();
var currentDate = date.getDate();
var currentYear = date.getFullYear();
$('input[name="daterange"]').daterangepicker({
    minDate: new Date(currentYear, currentMonth, currentDate)
    , dateFormat: 'yy-mm-dd'
    , startDate: moment(date).add(1,'days')
    , endDate: moment(date).add(2,'days')
    , datesDisabled:["17-09-09"]
    , locale: {
        format: 'DD.MM.YYYY'
    }
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

<script type="text/javascript" src="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.css" />

<input type="text" name="daterange" value="01/01/2015 - 01/31/2015" />

但是我的日历中没有禁用日期

【问题讨论】:

    标签: jquery bootstrap-daterangepicker


    【解决方案1】:

    bootstrap-daterangepicker 没有 datesDisabled 选项。相反,此选项属于 Bootstrap 3 Datepicker

    通过 daterangepicker,您可以使用 isInvalidDate 选项:

    isInvalidDate: function(ele) {
        var currDate = moment(ele._d).format('YY-MM-DD');
        return ["17-09-09"].indexOf(currDate) != -1;
    }
    

    sn-p:

    var date = new Date();
    var currentMonth = date.getMonth();
    var currentDate = date.getDate();
    var currentYear = date.getFullYear();
    $('input[name="daterange"]').daterangepicker({
        minDate: new Date(currentYear, currentMonth, currentDate)
        , dateFormat: 'yy-mm-dd'
        , startDate: moment(date).add(1,'days')
        , endDate: moment(date).add(2,'days')
        , isInvalidDate: function(ele) {
            var currDate = moment(ele._d).format('YY-MM-DD');
            return ["17-09-09"].indexOf(currDate) != -1;
        }
        , locale: {
            format: 'DD.MM.YYYY'
        }
    });
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
    
    <script type="text/javascript" src="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script>
    <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.css" />
    
    
    <input type="text" name="daterange" value="01/01/2015 - 01/31/2015" />

    【讨论】:

    • 它正在工作。问题是,我仍然能够将 09.09.2017 写入输入字段
    • 我还可以选择从 07.09.2017 到 12.09.2017 的范围。这实际上应该是不可能的,因为在该范围内有一个禁用日
    • 这两个是其他点。给我时间,我会添加这些其他功能。谢谢
    • 好的,没问题。非常感谢
    • @gaetanoM 我知道,很老了,但你知道这些选项是什么吗?我正在使用 react-bootstrap-daterangepicker ,它是 daterangepicker 的包装器,但我不知道如何不让用户包装无效日期。有什么想法可以分享吗?