允许HTML5日期输入中的空值

时间:2017-10-11 16:14:20

标签: javascript angularjs html5 date

如果我使用HTML5日期输入并且该字段表示映射到数据库中可空日期时间列的日期,我该如何绕过在输入字段中设置空值?

我的应用程序正在使用AngularJS,我的ng-model映射到范围变量,初始值为null(或空字符串)。以下是浏览器的控制台所说的内容:

Error: [ngModel:datefmt] http://errors.angularjs.org/1.6.6/ngModel/datefmt?p0=2017-09-14T00%3A00%3A00
    at angular.js:88
    at Array.<anonymous> (angular.js:25308)
    at angular.js:29301
    at m.$digest (angular.js:18253)
    at m.$apply (angular.js:18531)
    at l (angular.js:12547)
    at s (angular.js:12785)
    at XMLHttpRequest.y.onload (angular.js:12702) undefined

文档说明分配给日期输入字段的值必须是Date对象。我试图传递的值不是日期,因为该字段并不总是有值。我想我可以提供一个默认值,例如今天的日期,但我担心当特定字段不需要值时(例如,尚未取消的内容的取消日期),用户可以允许提交该值

似乎根据您使用的浏览器,您可以通过单击浏览器在字段中插入的“X”按钮来清除用户之前输入的日期。我尝试添加一个按钮来将字段的值设置为空字符串,但我得到了相同的错误。

我过去所做的解决方法是改为使用文本输入字段并使用正则表达式来验证输入,但这似乎不是必需的,并且日期输入字段应该允许空条目。

1 个答案:

答案 0 :(得分:0)

看来我的日期值是以字符串形式从我的REST服务返回,这与日期不同。

我发现这篇文章解释了一个更简单的解决方法:

Error: [ngModel:datefmt] Expected `2015-05-29T19:06:16.693209Z` to be a date - Angular