3

我想检查选定日期是否等于使用AngularJS的下一个生意日期。如果选择的日期不等于下一个生意日期,则会显示一条警告,如twitter bootstrap的警报警告,使用ng-show angularjs指令。AngularJS - 检查选定的日期是否等于下一个生意日期

这是当前的Fiddle

当前,下一个工作日由getNextBusinessDay()$ scope函数返回。比较是由ng-changed =“comparisonResult()”触发的,它应该根据比较返回true/false,但不起作用。

这里我的html代码:

<body ng-app="angularjs-starter" ng-controller="MainCtrl"> 
<div class="container"> 
    <section id="datepicker"> 
    <div class="bs-docs-example"> 
     <form class="form-horizontal well"> 
     <div class="control-group input-append"> 
      <label for="inputDatepicker" class="label" style="margin-right:6px;"> 
      Selected Date</label> 
      <input id="inputDatepicker" class="input-small" type="text" 
      ng-model="selectedDate" ng-changed="comparisonResult()" 
      data-date-format="dd/mm/yyyy" bs-datepicker> 
      <button type="button" class="btn" data-toggle="datepicker"> 
      <i class="icon-calendar"></i></button> 
     </div> 
     </form> 
    </div> 
    </section> 
</div> 
</body> 

这里是我的js代码:

var app = angular.module('angularjs-starter', ['$strap.directives']); 

app.controller('MainCtrl', function($scope, $window, $location) { 

    // Datepicker directive 
    $scope.selectedDate = null; 

    $scope.getNextBusinessDay = function() { 
     return $scope.getDeliveryDateObj(1); 
    } 

    $scope.getDeliveryDateObj = function(businessDaysLeftForDelivery){ 
     var now = new Date(); 
     var dayOfTheWeek = now.getDay(); 
     var calendarDays = businessDaysLeftForDelivery; 
     var deliveryDay = dayOfTheWeek + businessDaysLeftForDelivery; 
     if (deliveryDay >= 6) { 
      businessDaysLeftForDelivery -= 6 - dayOfTheWeek; // deduct this-week days 
      calendarDays += 2; // count this coming weekend 
      deliveryWeeks = Math.floor(businessDaysLeftForDelivery/5); // how many whole weeks? 
      calendarDays += deliveryWeeks * 2; // two days per weekend per week 
     } 
     now.setTime(now.getTime() + calendarDays * 24 * 60 * 60 * 1000); 

     now.setUTCHours(0); 
     now.setUTCMinutes(0); 
     now.setUTCSeconds(0); 
     now.setUTCMilliseconds(0); 

     return now; 
    } 

    $scope.getNextBusinessDay(); 

    $scope.comparisonResult = function() { 
     if($scope.selectedDate == $scope.getNextBusinessDay()) { 
      return false; 
     } else { 
      return true; 
     } 
    }; 

}); 

任何帮助或建议将不胜感激。提前致谢。 :)

回答

3

比较日期时,请使用a.getTime() == b.getTime()而不是a == b

+0

非常感谢。这只是解决了这里的错误。 – sharic19

0

现在是2017年,如果您使用Angular> = v1.2,您可以使用angular.equals(date1,date2)

相关问题