在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>
检查字段的方法是否正确?
由于
答案 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}}" />
答案 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
中提供的其他格式选项答案 3 :(得分:0)
只需添加您的控制器
$scope.today=new Date() // calculates current date
并在你的html代码中添加 -
min-date="today"
答案 4 :(得分:0)
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;