javascript - 使用 ui-bootstrap 版本 1.3.3 时,无法在 Angular ui-bootstrap datepicker 中添加最小日期和最大日期验证

标签 javascript angularjs validation date

我正在尝试在我的日期选择器中添加验证,以便用户无法选择当前日期之前 30 天的任何日期,也无法选择 future 30 天的任何日期,我正在使用以下日期选择器代码 -

<div class="form-group" ng-class="{ 'has-error' : memberForm.dateOfBirth.$invalid && (memberForm.dateOfBirth.$touched || memberForm.$submitted) }">
  <label for="Date of Birth" class="" ng-hide="memberForm.dateOfBirth.$invalid && (memberForm.dateOfBirth.$touched || memberForm.$submitted)">Date of Birth(dd/mm/yyyy)*</label>
  <label class="error_message_text" ng-show="memberForm.dateOfBirth.$invalid && (memberForm.dateOfBirth.$touched || memberForm.$submitted)"> Date of birth is required </label>
  <p class="input-group" style="width:270px;">
    <input type="text" class="form-control" name="dateOfBirth" uib-datepicker-popup="dd/MM/yyyy" ng-model="dt" is-open="popup1.opened" datepicker-options="dateOptions" ng-required="true" close-text="Close" alt-input-formats="altInputFormats" />
    <span class="input-group-btn">
      <button type="button" class="btn btn-default" ng-click="open1()"><i class="glyphicon glyphicon-calendar"></i></button>
    </span>
  </p>
</div>

我正在使用以下脚本 -

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.js"></script>  
<script src="https://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.3.3.js"></script>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"> 

我在这里创建了一个笨蛋 - https://plnkr.co/edit/RmDyhjKpEJvTMjNRp5LE?p=preview

谁能告诉我如何在我的代码中实现此验证?

最佳答案

问题就在这里:

$scope.minDate = date.setDate((new Date()).getDate() - 30);

当您调用 date.setDate(..) 时,它不会返回日期对象,因此请执行此操作

$scope.toggleMin = function() {
    var date = new Date();
    date.setDate((new Date()).getDate() - 30);
    $scope.minDate = date;
  };
  $scope.toggleMin();


var date1 = new Date();
date1.setDate((new Date()).getDate() + 30);
$scope.dateOptions.maxDate = date1;

小修正-(在分配最小日期和最大日期时添加了.dateOptions)

 $scope.toggleMin = function() {
        var date = new Date();
        date.setDate((new Date()).getDate() - 30);
        $scope.minDate = date;
      };
      $scope.toggleMin();

    //  Add this for maxDate, no code was there in plunker
    var date1 = new Date();
    date1.setDate((new Date()).getDate() + 30);
    $scope.dateOptions.maxDate = date1;

回答笨蛋- https://plnkr.co/edit/RmDyhjKpEJvTMjNRp5LE?p=preview

关于javascript - 使用 ui-bootstrap 版本 1.3.3 时,无法在 Angular ui-bootstrap datepicker 中添加最小日期和最大日期验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38717184/

相关文章:

javascript - 如何让我的 vert.x 进程退出

javascript - 修改内存中的 Jquery 元素并返回它

angularjs - 从新的 Yeoman 安装返回的 grunt 服务 - 警告 : Task "serve" not found

angularjs - 带有 Angular 2 的 Azure AD B2C

mysql - Laravel - 验证用户输入的唯一值

javascript - Base64 编码图像并在 JS 上渲染

javascript - 无法在 d3.js 中添加轴

angularjs - Angular.js 单击链接下载导致导航到主页

c# - 验证年龄不低于 18 岁

ruby-on-rails-3 - 如何验证表单中的位置地址?