当输入值改变且值为null或未定义时,我正在尝试将默认日期设置为日期输入中的最大日期。首先我选择今天作为值,这是正常的。然后我清除了日期(点击像'的' x'),值变为默认值('1970-01-01')。然后我再次选择今天的值,在我的js代码中检查值是未定义的,因此该值设置为默认值('1970-01 -01')。我想知道为什么我今天不能选择它作为价值,发生了什么?我在Chrome浏览器中测试过。
html代码:
<!doctype html>
<html ng-app="app">
<head>
<script src="angular/angular.min.js"></script>
</head>
<body>
<div ng-controller="MainCtrl">
<input type="date" max="{{today}}" ng-model="myDate.date" ng-change="change()">
</div>
<script src="app.js"></script>
</body>
</html>
js代码:
var app = angular.module('app', []);
app.controller('MainCtrl', ['$scope', function ($scope) {
$scope.myDate = {
date:null
}
$scope.today = '2016-03-14';
$scope.change = function(){
if(!$scope.myDate.date){
$scope.myDate.date = new Date('1970-01-01');
}
}
}]);
refer picture
http://plnkr.co/edit/UKtn8FbvsczbFtn44Vuq?p=preview
答案 0 :(得分:0)
首先,我不建议使用Chrome的内置日期选择器,因为使用您的方法会使输入框在FF中完全无法使用。
关于你的问题:
这是我选择2016-03-14
作为输入时输出日期的样子:2016-03-13T23:00:00.000Z
(偏移是我的时区所假设的。)
现在让我们按“x”复位输入框:1970-01-01T00:00:00.000Z
。
如果我现在尝试再次选择2016-03-14
它将无效,它会默认返回1970-01-01
,因为日期加上我的时区现在超过max
允许的输入值
将时区添加到new Date('1970-01-01')
应解决问题(使用new Date('1970-01-01T23:00:00.000Z')
为我工作并允许我选择2016-03-14
)。