允许 HTML5 日期输入中的空值 [重复]

Posted

技术标签:

【中文标题】允许 HTML5 日期输入中的空值 [重复]【英文标题】:Allowing empty values in HTML5 date input [duplicate] 【发布时间】:2018-03-23 09:52:44 【问题描述】:

如果我使用 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”按钮来清除用户先前输入的日期。我尝试添加一个按钮以将字段的值设置为空字符串,但我得到了同样的错误。

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

【问题讨论】:

您是否尝试使用空字符串?它适用于DEMO on PLNKR。 我想这确实有效;该错误实际上是在绑定我的模型中的日期值时发生的。与控件关联的日期格式是“mm/dd/yyyy”(根据 Chrome,就像您的示例一样),但有问题的日期是“2017-09-14T00:00:00”。在这种情况下,我不关心时间部分,只关心日期部分。这几乎就像它不喜欢这种格式。我该如何解决这个问题?如果我能解决这个问题,我一定会修复应用程序其他部分中所有笨拙的解决方法。 【参考方案1】:

我的日期值似乎是作为字符串从我的 REST 服务返回的,这与日期不同。

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

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

【讨论】:

以上是关于允许 HTML5 日期输入中的空值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 vb.net 中日期的空值传递给 sql 存储过程?

ssis 空日期作为空值

计算日期之间的空值

sqlite - 忽略 lag/lad 中的空值

检查输入字段中的空值的正确方法是啥[重复]

如何使用文本框搜索功能返回同一列中的空值和值