簡體   English   中英

如何設置datepicker minDate?

[英]How to set datepicker minDate?

我有一個指令date-picker.js並查看為selectDate.html。 我想在另一個日期選擇器的值更改時為日期選擇器設置minDate。 如何實現呢?

.directive('selectDate', ['moment', function(moment) {
    return {
        restrict: 'E',
        require:'^ngModel',
        templateUrl: 'views/selectDate.html',
        replace: true,
        scope: {
            ngModel: '='
        },
        link: function($scope, element, attrs) {
            $scope.date = $scope.ngModel;
            $scope.dateOptions = {
                startingDay: 1,
                showWeeks: false
            };
            $scope.dateStatus = {
                opened: false
            };
            $scope.openDatePopup = function() {
                $scope.dateStatus.opened = true;
            };
            $scope.$watch('date', function (newValue, oldValue) {
                if (newValue !== oldValue) {
                    var date = moment(newValue);
                    $scope.ngModel = date.format('YYYY-MM-DD');
                }
            });
        }
    };

selectDate.html

<span class="select-date">
  <input type="text" readonly="readonly" datepicker-popup="dd.MM.yyyy"     datepicker-options="{startingDay: 1, showWeeks: true}" ng-model="date"   show-button-bar="false" current-text="Heute" close-text="Schließen" is-  open="dateStatus.opened" min-date="'2014-01-01'" class="form-control" required="required" ng-click="openDatePopup()">
</span>

我正在使用它,如下所示:

   From <select-date ng-model="fromDate"></select-date>
   To <select-date ng-model="toDate"></select-date>

我想將toDate的minDate設置為fromDate值。

好吧,你可以使用ui-bootstrap指令,它更容易,下面是代碼

 $scope.dateOptions = {
            formatYear: 'yyyy',
            startingDay: 1
    };
 $scope.opened = true;
 $scope.minDate=  new Date();
  var maxDate = new Date();
  maxDate.setFullYear (maxDate.getFullYear() + 2);//enable for 2 future years.. 
 $scope.maxDate= maxDate;

您的HTML將如下所示

<input type="text" class="form-control selection-box"
                                id="datepicker" 
                                datepicker-popup="{{dateFormat}}"
                                ng-model="selectedDate" is-open="opened"
                                ng-class="{'date-changed':colorChange[$parent.$parent.$index +'-'+ $parent.$index]}"
                                min-date="minDate" max-date="maxDate"
                                datepicker-options="dateOptions" readonly="readonly"
                                ng-change="changeDate()"
                                close-text="Close" ng-required="true" /> 

要回答OP的問題,您可以進行以下代碼更改。

    From <select-date ng-model="fromDate" min-date="fromMinDate"></select-date>
       To <select-date ng-model="toDate" min-date="toMinDate"></select-date>

<span class="select-date">
  <input type="text" readonly="readonly" datepicker-popup="dd.MM.yyyy"     datepicker-options="{startingDay: 1, showWeeks: true}" ng-model="date"   show-button-bar="false" current-text="Heute" close-text="Schließen" is-  open="dateStatus.opened" min-date="setMinDate" class="form-control" required="required" ng-click="openDatePopup()">
</span>

以下是您指令中的更改。

.directive('selectDate', ['moment', function(moment) {
    return {
        restrict: 'E',
        require:'^ngModel',
        templateUrl: 'views/selectDate.html',
        replace: true,
        scope: {
            ngModel: '='
            minDate: '@'//which date input we are changing...
        },
        link: function($scope, element, attrs) {
            $scope.date = $scope.ngModel;
            $scope.selectedDateType = $scope.minDate=='fromMinDate'?'From':'To';
            $scope.dateOptions = {
                startingDay: 1,
                showWeeks: false
            };
            $scope.dateStatus = {
                opened: false
            };
            $scope.openDatePopup = function() {
                $scope.dateStatus.opened = true;
                $scope.setMinDate = new Date();//for From date..
            };
            $scope.$watch('date', function (newValue, oldValue) {
                if (newValue !== oldValue) {
                    var date = moment(newValue);
                    $scope.ngModel = date.format('YYYY-MM-DD');
                   if($scope.selectedDateType=='From'){
                    $scope.setMinDate = $scope.fromDate;//for To date
                    }
                }
            });
        }
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM