javascript - 为什么我要在常规 Web 应用程序中使用输入类型日期?

标签 javascript html date input w3c

我目前正在使用 Phonegap 和 jQuery Mobile 构建一个 iOS 应用程序,并且我正在使用 HTML5 输入类型日期元素,供用户输入他们的生日。这对于 Phonegap 应用程序的使用完全有意义,因为这会调用手机 native 日期选择器 - 太棒了!

但是,当使用桌面浏览器测试我的应用程序时(我使用的是 Firefox 16),没有显示日期选择器,显然是因为 Firefox 尚未实现这一点。这很酷,除了我可以在该字段中输入我想要的任何内容 - 任何我想要的格式。

规范说应该使用 yyyy-mm-dd格式,我的 iOS 设备就是这样做的。但是,如果我输入例如 06-09-94 ,当我尝试将其转换为 JavaScript 日期对象时,效果不会很好。

这是我的测试:

// Value is set to 1994-09-06
console.log(new Date($("input[type=date]")[0].value));
// > Date object representing September 6, 1994

// Value is set to 06-09-1994
console.log(new Date($("input[type=date]")[0].value));
// > Invalid date

我在某处读到,内部(至少对于 chrome),所有“有效”日期格式都将表示为 yyyy-mm-dd ,但这并没有发生。 http://updates.html5rocks.com/2012/08/Quick-FAQs-on-input-type-date-in-Google-Chrome

What kind of format does the input value return?

The input.value always returns as yyyy-mm-dd regardless of the presentation format.

所以,正如标题所示:我为什么要使用 <input type="date">在基于非移动的 Web 应用程序中?

最佳答案

您可能希望使用 HTML 5 表单元素,因为希望有一天所有主流浏览器都支持它们。正如您所注意到的,日期选择器等提供了非常强大的开箱即用功能,否则必须手动编码。

但是,在您无法控制用户使用的浏览器的环境中,您不会想让它们独立存在。

目前处理此问题的建议方法是检查浏览器是否支持所需的表单字段,如果不支持,请使用 jQuery UI 元素等替代方案。 快速谷歌搜索教程:http://www.javascriptkit.com/javatutors/createelementcheck2.shtml

我认为,一些js框架在内部处理这样的检查,至少对于dojo我知道他们尝试使用尽可能多的 native 浏览器功能 - 但我不确定它是如何用日期选择器处理的。

我不得不说,我很惊讶 Firefox 还没有实现这一点,Chrome 和 Opera 似乎处于领先地位......

关于javascript - 为什么我要在常规 Web 应用程序中使用输入类型日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13135618/

相关文章:

java - 解析复杂的日期格式

javascript - React 组件抛出的错误,被不相关的 promise 的 catch block 捕获

javascript - 如何阻止 img src 在脚本中使用当前 URL 和 URL

javascript - CamanJS - 替换实例

html - scss - 类中的@media 查询不适用于子选择

html - 将底部边框放在页面右上角 Logo 下方的 CSS 问题

html - 在手机上显示网站时,它被放大了

javascript - 用于另一个函数的多个函数参数的 CoffeeScript

sql - 过滤掉 PostgreSQL 中指定星期几的记录

Magento 订单创建日期错误