angularjs 中的日期输入有些奇怪
Something strange with date input in angularjs
当输入值更改且值为 null 或未定义时,我正在尝试将默认日期设置为日期输入中的最大日期。首先我选择今天作为值,这是正常的。然后我清除了日期(单击类似"x"的分叉),值变为默认值("1970-01-01")。然后我再次选择今天作为值,在我的js代码中检查值是未定义的,所以该值被设置为默认值('1970-01-01')。不知道为什么不能选择今天作为值,怎么回事?我在铬浏览器中进行了测试。
网页代码:
<!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');
}
}
}]);
参考图片
http://plnkr.co/edit/UKtn8FbvsczbFtn44Vuq?p=preview
首先,我不建议使用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
)。
相关文章:
- 当用户在文本框中输入日期时,如何计算一年的持续时间
- 如何在JavaScript中返回两个日期(当前日期和输入日期)之间的字符串差异
- 表格报告-动态比较特定用户的输入日期和现有日期
- HTML输入日期,响应所选值
- 使用奇怪的控制台日志结果向输入日期添加天数
- 如果输入日期大于js中定义的日期,如何发出警报
- Kendo ui Grid:标准的HTML5输入日期时间可以用作单元格编辑器吗
- 使用输入日期选取器中的值
- 按输入日期过滤 ng 重复
- 展开输入日期日历(浏览器本机)
- 设置用户输入日期的格式
- 在 angularjs 中继器内的输入日期上将字符串转换为日期
- 日期选择器始终以默认日期打开,而不是以没有 DAYS 的格式输入日期
- 在输入日期字段的多次迭代中加载日期选取器
- 如何在JavaScript中输入日期和时间以及位置
- 无法使用 jqxDateTimeInput 手动输入日期
- 检查输入日期是否在给定范围内
- 我可以使用 Jquery UI 日期选择器来更改键盘输入日期的格式吗?
- JavaScript - 输入日期,然后自动填充下一个字段的差异
- 本地输入日期时间的HTML 5表单验证