Javascript 根据条件启用日期

Javascript 根据条件启用日期,javascript,angularjs,Javascript,Angularjs,我正在使用angularjs应用程序。我有两个日期字段,要求用户在可用日期日历中选择日期时,应启用到期日期字段,并且用户应能够从可用日期字段中选择的日期起24天内选择日期。 例如,当用户在可用日期字段中选择日期为2017-03-02时,到期日期字段应启用,日历应仅启用2017-03-02之后的24天(即2017-03-25),并且应禁用所有日期,以便用户无法选择2017-03-25之后或2017-03-02之前的任何日期。。 请找到演示 js代码: myApp.controller("myCon

我正在使用angularjs应用程序。我有两个日期字段,要求用户在可用日期日历中选择日期时,应启用到期日期字段,并且用户应能够从可用日期字段中选择的日期起24天内选择日期。 例如,当用户在可用日期字段中选择日期为2017-03-02时,到期日期字段应启用,日历应仅启用2017-03-02之后的24天(即2017-03-25),并且应禁用所有日期,以便用户无法选择2017-03-25之后或2017-03-02之前的任何日期。。 请找到演示

js代码:

myApp.controller("myController", ["$scope",
    function($scope) {
        var today = new Date();
        $scope.AvailableDate = new Date();
        $scope.ExpireDate = new Date();
        $scope.dateFormat = 'yyyy-MM-dd';
        $scope.availableDateOptions = {
            formatYear: 'yy',
            startingDay: 1,
            minDate: "2016-03-12",
            maxDate: today
        };
        $scope.expireDateOptions = {
            formatYear: 'yy',
            startingDay: 1,
            minDate: today,
            maxDate: "2017-06-12"
        };
        $scope.availableDatePopup = {
            opened: false
        };
        $scope.expireDatePopup = {
            opened: false
        };
        $scope.ChangeExpiryMinDate = function(availableDate) {
            if (availableDate != null) {
                var expiryMinDate = new Date(availableDate);
                $scope.expireDateOptions.minDate = expiryMinDate;
                $scope.ExpireDate = expiryMinDate;
                //code to set maxDates in Expire Date field -start
                 var date = new Date(expiryMinDate);
                 var newdate = new Date(date);
                 newdate.setDate(newdate.getDate() + 3);
                 var dd = newdate.getDate();
                 var mm = newdate.getMonth() + 1;
                 var y = newdate.getFullYear();
                  var someFormattedDate = y + '/' + dd + '/' + mm;
                  $scope.expireDateOptions.maxDate = someFormattedDate;
                //code to set maxDates in Expire Date field -end
            }
        };
        $scope.ChangeExpiryMinDate();
        $scope.OpenAvailableDate = function() {
            $scope.availableDatePopup.opened = !$scope.availableDatePopup.opened;
        };
        $scope.OpenExpireDate = function() {
            $scope.expireDatePopup.opened = !$scope.expireDatePopup.opened;
        };
    }
]);
下面是我尝试但未成功的代码

 var date = new Date(expiryMinDate);
                     var newdate = new Date(date);
                     newdate.setDate(newdate.getDate() + 3);
                     var dd = newdate.getDate();
                     var mm = newdate.getMonth() + 1;
                     var y = newdate.getFullYear();
                      var someFormattedDate = y + '/' + dd + '/' + mm;
                      $scope.expireDateOptions.maxDate = someFormattedDate;

根据您的要求,我使用以下方法来保持minDate和maxDate设置:

$scope.ChangeExpiryMinDate = function(availableDate) {
        if (availableDate != null) {
            var availableDate = new Date(availableDate);
            var expiryMinDate = angular.copy(availableDate);
            expiryMinDate.setDate(expiryMinDate.getDate() + 23);

            $scope.ExpireDate = availableDate;
            $scope.expireDateOptions.minDate = availableDate;
            $scope.expireDateOptions.maxDate = expiryMinDate;
        } else {
            delete $scope.ExpireDate;
        }
    };

$scope.ChangeExpiryMinDate($scope.AvailableDate);
您忘记将当前的AvailableDate传递到函数中,因此当控制器首次加载时,过期日期字段已经被限制

要禁用周末,您可以使用以下命令更新ExpiryDate选项:

$scope.expireDateOptions = {
    formatYear: 'yy',
    startingDay: 1,
    minDate: today,
    maxDate: "2017-06-12",
    dateDisabled: function(data) {
        var date = data.date;
        var mode = data.mode;
        return (mode === 'day' && ( date.getDay() === 0 || date.getDay() === 6 ));
    }
};

我在这里创建了一个有效的JSFIDLE:

您在FIDLE中提到的代码不起作用,我想在用户从“可用日期”字段中选择日期后启用“过期日期”字段,并且“过期日期”字段应仅显示23天,后跟用户在“可用日期”字段中选择的日期。@user2340824Thank@user2340824,但我提出的问题是错误的,我想通过排除周六和周日来展示23天,@participantjava抱歉!我把小提琴粘错了。我更新了小提琴,还发现了另一个问题。谢谢,我注意到了。除周六和周日外,我们可以启用23天吗?