我有一个HTML5日期输入,我希望默认情况下将其值设置为我的模型中的date属性的值。我对格式化并不太挑剔,因为Chrome似乎会根据我的语言环境对我做出决定,但理想情况下,格式应该是一致的dd/MM/yyyy
。
我是这样设置我的输入的:
<input type="date"
ng-model="date"
value="{{ date | date: 'yyyy-MM-dd' }}" />
这在Chrome上运行得很好,默认情况下我看到了以下内容:
(我仍然不太理解为什么要在yyyy-MM-dd
__中给出值,如果Chrome仍然根据我的语言环境对其进行格式化,但这是另一个问题。)
我的问题是Firefox没有以我指定的方式显示日期的值。我认为这与将输入绑定到date
模型有关,因为我可以在value
属性中指定几乎任何字符串,并且在默认情况下,我仍然会在输入中看到长日期字符串:
如果我从input标记中删除ng-model="date"
,Firefox会很好地显示我给它的任何值。我不认为输入绑定的模型对它的默认值有任何影响吗?
我知道日期输入并不是所有人都支持的,但考虑到它应该依赖于简单的文本输入,我不明白为什么它的值不能简单地为2013-08-05
,正如angular的日期过滤器所指定的那样。
那么,如何让接受我在日期输入中的格式值呢?
备注在用户完成编辑之后,我当然会执行验证,并将每个日期输入值转换为适当的Date
对象。不确定这是否与问题相关,但只是为了以防万一,因为输入格式显然需要一致,以便日期转换在所有浏览器中都能相同地工作。当然,Chrome为我决定输入格式是有问题的……
发布于 2013-08-05 23:56:52
为什么必须以yyyy-MM-dd?给定值
根据HTML5的input type = date spec,该值必须采用yyyy-MM-dd
格式,因为它采用在RFC3339中指定的有效full-date
的格式为
full-date = date-fullyear "-" date-month "-" date-mday
这与Angularjs无关,因为指令输入不支持date
类型。
如何让火狐接受日期输入中的格式值?
FF至少在24.0版本之前不支持date
类型的输入。您可以从here获取此信息。所以现在,如果您在FF中使用类型为date
的输入,文本框将接受您传入的任何值。
我的建议是,您可以使用Angular-ui's Timepicker,而不要使用日期输入的HTML5支持。
发布于 2014-06-08 01:19:59
你可以使用这个,它工作得很好:
<input type="date" class="form1"
value="{{date | date:MM/dd/yyyy}}"
ng-model="date"
name="id"
validatedateformat
data-date-format="mm/dd/yyyy"
maxlength="10"
id="id"
calendar
maxdate="todays"
ng-click="openCalendar('id')">
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar" ng-click="openCalendar('id')"></span>
</span>
</input>
发布于 2016-06-05 11:05:13
在我的例子中,我是这样解决的:
$scope.MyObject = // get from database or other sources;
$scope.MyObject.Date = new Date($scope.MyObject.Date);
和输入类型date是可以的
https://stackoverflow.com/questions/18061757
复制相似问题