当输入值更改时,当值为null或undefined.First时,我尝试将默认日期设置为日期输入中的最大日期,我今天选择的值为null或normal.Then,我清除了日期(单击“x”的叉子),将值再次作为值选择为默认值(‘1970-01-01’),在js代码中,检查值未定义,因此该值被设置为默认值(‘1970-01-01’).I.I想知道为什么今天不能选择作为值,发生了什么?我在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');
}
}
}]);发布于 2016-03-14 12:27:30
首先,我不建议使用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)。
https://stackoverflow.com/questions/35986778
复制相似问题