将过去日期和日期持续时间禁用为三个月

disable past dates and to-date duration to three month

本文关键字:日期 三个月 持续时间 过去      更新时间:2023-09-26

我创建了一个使用 angularjs 获取日历的应用程序,我使用了 angular-bootstrap-datetimepicker 插件来实现这一点。该应用程序运行正常,但问题是我想禁用除当前日期之外的所有通过日期,并且从当前日期开始只应启用三个月。

此插件是否有任何功能,例如开始日期和结束日期

谁能帮我解决这个问题

我的工作演示显示在 JSFiddle

目录

<div ng-app="myApp">
    <div ng-controller="AppCtrl">Selected Date: {{ data.embeddedDate | date:'yyyy-MM-dd a' }}
        <datetimepicker data-ng-model="data.embeddedDate" data-datetimepicker-config="{ startView:'day', minView:'day' }" />
    </div>
</div>

脚本

var app = angular.module('myApp', ['ui.bootstrap.datetimepicker']);
app.controller('AppCtrl', function ($scope) {
});

有一个"渲染前"回调将在日期选择器的每次渲染上执行,为您提供显示当前视图的一系列DateObjectDateObject的属性之一是 selectable .设置控制是否可以选择日期。

对于您的方案,实现起来非常容易:

$scope.beforeRender = function ($view, $dates, $leftDate, $upDate, $rightDate) {
        var threeMonthsLater = moment().add(3, 'months');
        for(var index=0;index<$dates.length;index++) {
            $dates[index].selectable = moment($dates[index].utcDateValue).isBetween(moment(),threeMonthsLater);            
        }
    }

使用大于 2.9 的 moment 版本.js isBetween支持。无论如何,日期选取器都需要此库。

工作小提琴