在angularJS输入中将最小日期设置为当前日期

时间:2015-03-16 20:55:33

标签: angularjs

在AngularJS中,我们如何将min的{​​{1}}属性设置为当前日期(今天' s)?

input type="date"

EDIT1

我做了下面的建议并将其添加到控制器中 -

<input type="date" ng-model="data.StartDate" name="StartDate" min=?? />

这是在Html中 -

$scope.currentDate = new Date();

现在,只有年份不允许选择少于2015年。此外,如果整个日期小于当前日期,则不会进行验证。所需的验证工作正常。 <input type="date" ng-model="data.StartDate" name="StartDate" required min="{{currentDate | date:'yyyy-MM-dd'}}" /> <span ng-show="form.StartDate.$dirty && form.StartDate.$invalid"> <span ng-show="form.StartDate.$error.required">Start Date is required</span> <span ng-show="form.StartDate.$error.min">Start Date should not be less than current date</span> </span> 检查字段的方法是否正确?

由于

5 个答案:

答案 0 :(得分:25)

是的,您可以设置最小值。根据{{​​3}}:

<input type="date"
       ng-model=""
       [name=""]
       [min=""]
       [max=""]
       [required=""]
       [ng-required=""]
       [ng-change=""]>
  

<强>参数

     

min (可选) string - 如果值,则设置最小验证错误密钥   输入小于分钟。这必须是有效的ISO日期字符串   (YYYY-MM-DD)。

修改 要将字段设置为当前日期:

控制器:

function Ctrl($scope)
{
    $scope.date = new Date();
}

视图:

<input type="date" ng-model="data.StartDate" 
        name="StartDate" min="{{date | date:'yyyy-MM-dd'}}" />

工作示例docs

答案 1 :(得分:2)

根据Angular文档

  

min(可选)string如果值,则设置min验证错误键   输入小于分钟。这必须是有效的ISO日期字符串   (YYYY-MM-DD)。

您可以将其绑定到范围变量或直接将表达式放在属性中,它只需要采用正确的格式(javascript日期对象具有toISOString()方法)。还应注意,这并不妨碍用户选择低于最小值的日期,而是设置验证密钥以指示该字段无效。

编辑:

<强>脚本

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

app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
  var today=new Date();
  $scope.today = today.toISOString();
});

<强> HTML

<!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.3.x" src="https://code.angularjs.org/1.3.14/angular.js" data-semver="1.3.14"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl">
    <p>Hello {{name}}!</p>
    <form name="myForm">
    <input type="date" ng-model="StartDate" name="StartDate" required min="{{today}}" />
    <span ng-show="myForm.StartDate.$dirty && myForm.StartDate.$invalid">
    <span ng-show="myForm.StartDate.$error.required">Start Date is required</span>
    <span ng-show="myForm.StartDate.$error.min">Start Date should not be less than current date</span>

</span>
</form>
  </body>

</html>

您的错误消息表明您希望日期不大于当前日期,如果是这种情况,只需更改

  <input type="date" ng-model="StartDate" name="StartDate" required min="{{today}}" />

  <input type="date" ng-model="StartDate" name="StartDate" required max="{{today}}" />

Working Example

答案 2 :(得分:1)

正确答案已在上面, 如果有人在Angular 2/4/5中寻找解决方案,这是一种方式,

在.ts文件中

private todate = new Date();

在你的html文件中,

 <input type="date" min="{{todate | date:'yyyy-MM-dd'}}" class="form-control" [(ngModel)]="datemodel" id="input-12">

此处您还可以提交Angular

中提供的其他格式选项

date formats

答案 3 :(得分:0)

只需添加您的控制器

$scope.today=new Date() // calculates current date

并在你的html代码中添加 -

min-date="today"

答案 4 :(得分:0)

&#13;
&#13;
 var today = new Date().toISOString().split('T')[0];
        document.getElementsByName("appo_date")[0].setAttribute('min', today);
&#13;
  <input type="date"  name="appo_date" id="appo_date" ng-model="appoint_data.appo_date"  
          ng-required="true" close-text="Close" uib-datepicker-popup="dd-MMMM-yyyy"  required> 
&#13;
&#13;
&#13;