【发布时间】:2013-05-10 10:51:17
【问题描述】:
我正在努力为谷歌浏览器中type="date" 的输入设置一个值:http://jsfiddle.net/ruslans/gNv7H/
<input data-bind="value: dateString" type="date"></input>
var viewModel = {
someDate: new Date(parseInt("/Date(1367708400000)/".substr(6)))
};
ko.applyBindings(viewModel);
我的日期将来自 JSON 数据,但首先我需要找出 Chrome 的日期选择器需要采用哪种格式才能识别绑定。我是否必须使用 jQuery 选择器并在字段上设置.val()?看起来很蠢……
编辑:根据this article,设置谷歌日期输入值的日期格式必须始终为"yyyy-mm-dd"。这是一个遗憾,因为我们对所有没有本地日期选择器的浏览器都使用 jQuery 日期选择器。
【问题讨论】:
-
请注意,根据W3 standard draft,这不是特定于chrome的,但每个浏览器都将/应该像这样实现:“yyyy-mm-dd”日期格式。由于您可以将 jQuery 日期选择器配置为使用这种格式,所以我看不到您的问题...
-
显示的日期格式将是特定于租户的。例如。 mm/dd/yyyy 代表美国,mm.dd.yyyy 代表俄罗斯,dd/mm/yyyy 代表英国等。但是,在源代码中,它始终是 JSON 日期格式。
-
因此您可以在模型/源中以任何格式设置日期。然后,您需要在设置输入值时将其转换为“yyyy-mm-dd”。您可以设置 jQuery 以使用这种“yyyy-mm-dd”格式来存储数据。您需要设置 jQuery 和 chrome 原生日期选择器,以便以任何目标格式显示它。因此,您最终将获得三种格式:源、输入格式、显示格式。我在这里没有看到问题,这就是当你必须处理日期时这些东西是如何工作的。
标签: javascript jquery html google-chrome knockout.js