Search code examples
javascriptangularjsdatepickerangular-uiangular-ui-bootstrap

Datepicker not opening twice in angular-ui version 0.11.0


I am trying to have 2 datepickers and I am using Angular UI version 0.11.0.

My HTML code

<span ng-if="periods.period == 10">
     <input type="text" datepicker-popup="dd-MMMM-yyyy" ng-model="cdate.customStartDate" is-open="opened1"  max-date="maxDate" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close" class="input-md" />
     <button class="btn" ng-click="open($event,'opened1')"><span class="glyphicon glyphicon-calendar"></span></button>

</span>


<span ng-if="periods.period == 10"> 
- 
    <input type="text" datepicker-popup="dd-MMMM-yyyy" ng-model="cdate.customEndDate" is-open="opened2"  min-date="cdate.customStartDate" max-date="maxDate" datepicker-options="dateOptions" date-disabled="disabled(date, mode)"  ng-required="true" close-text="Close" class="input-md" />
    <button class="btn" ng-click="open($event,'opened2')"><span class="glyphicon glyphicon-calendar"></span></button>   
</span>

and my JS code is `

                     $scope.disabled = function(date, mode) {
                      return ( mode === 'day' && ( date.getDay() === -1 || date.getDay() === 7 ) );
                     };

                     $scope.maxDate = new Date();


                       $scope.open = function($event,opened) {
                            $event.preventDefault();
                            $event.stopPropagation();

                            $scope[opened] = true;
                          };


                     $scope.dateOptions = {
                     'year-format': "'yy'",
                     'starting-day': 1
                     };

` At first, when I click on the button, datepicker opens up just fine. But once it has been opened once,the problem is that the datepicker popup doesn't open the next time I click on the button.


Solution

  • Quick Fix: Removed the button tag altogether and modified the datepicker code, so it looks like this :

    <input type="text" 
           datepicker-popup="dd-MMMM-yyyy"
           ng-model="cdate.customStartDate"
           is-open="cdate.customStartDate.open"
           ng-click = "cdate.customStartDate.open = true"
           max-date="maxDate"
           datepicker-options="dateOptions"
           date-disabled="disabled(date, mode)" 
           ng-required="true"
           close-text="Close"
           class="input-md" />