Ручной выбор даты ввода в макс. Возврат не определен - PullRequest
0 голосов
/ 25 октября 2018

У меня есть два указателя даты с максимальным и минимальным значением.Если для параметра Дата от максимума задана конкретная дата, и я выбираю эту дату вручную, она возвращает недопустимую дату.Выбор любой другой даты возвращает правильное значение. (Например, если максимальная установка 24 октября, и я выбираю ее вручную, она возвращает неопределенное значение)

 <div class="col-sm-2">
  <h6>From Date</h6>
    <input type="date" onkeydown="return false" id="fromDate" class="form-control" ng-change="fdateSel()" max="{{fmaxdate}}" ng-model="fromDate">    
 </div>
 <div class="col-sm-2">
   <h6>To Date</h6>
   <input type="date" onkeydown="return false" id="toDate" class="form-control" ng-change="tdateSel()" min="{{tmindate}}" max="{{tmaxdate}}" ng-model="toDate">
 </div>

Вот контроллер

$scope.fromDate = new Date((new Date()).valueOf() - 1000 * 3600 * 24 * 7);
$scope.toDate = new Date();

$scope.fmaxdate = $filter('date')(new Date($scope.toDate.valueOf() - 1000 * 3600 * 24), "yyyy-MM-dd");
$scope.tmindate = $filter('date')(new Date($scope.fromDate.valueOf() + 1000 * 3600 * 24), "yyyy-MM-dd");
$scope.tmaxdate = $filter('date')(new Date(), "yyyy-MM-dd");

$scope.fdateSel = function () {
        $scope.tmindate = $filter('date')(new Date($scope.fromDate.valueOf() + 1000 * 3600 * 24), "yyyy-MM-dd");
    }

$scope.tdateSel = function () {
        if (undefined != $scope.toDate)
        $scope.fmaxdate = $filter('date')(new Date($scope.toDate.valueOf() - 1000 * 3600 * 24), "yyyy-MM-dd");
    }

1 Ответ

0 голосов
/ 25 октября 2018

Мне не удалось воспроизвести ошибку, которую вы видели, но я заметил, что вы пропускаете атрибуты ng-model во входных данных.Дайте мне знать, если это поможет.

Ниже приведен рабочий пример:

var app = angular.module("app", []);

app.controller('exampleController', ['$scope', function($scope) {
  $scope.fromDate = new Date((new Date()).valueOf() - 1000 * 3600 * 24 * 7);
  $scope.toDate = new Date();

  $scope.fmaxdate = new Date($scope.toDate.valueOf() - 1000 * 3600 * 24);
  $scope.tmindate = new Date($scope.fromDate.valueOf() + 1000 * 3600 * 24);
  $scope.tmaxdate = new Date();

  $scope.fdateSel = function () {
         if (undefined != $scope.fromDate) {
          $scope.tmindate = new Date($scope.fromDate.valueOf() + 1000 * 3600 * 24);
         }
      }

  $scope.tdateSel = function () {
          if (undefined != $scope.toDate) {
            $scope.fmaxdate = new Date($scope.toDate.valueOf() - 1000 * 3600 * 24);
            }
      }
  }]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>

<div ng-app="app" ng-controller="exampleController as ctrl">
  <div class="col-sm-2">
    <h6>From Date</h6>
    <input type="date" onkeydown="return false" ng-model="fromDate" id="fromDate" class="form-control" ng-change="fdateSel()" max="{{fmaxdate}}">    
  </div>
  <div class="col-sm-2">
   <h6>To Date</h6>
   <input type="date" onkeydown="return false" ng-model="toDate" id="toDate" class="form-control" ng-change="tdateSel()" min="{{tmindate}}" max="{{tmaxdate}}">
 </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...