我正在尝试探索使用 HTML5 在不同平台上运行 native Web 应用程序的可能性。目前,一个 <input type="date">
field 只是在 Android 和 iOS 上打开标准软键盘。我想 future 移动操作系统的软键盘将包括日期选择器等 - 就像 <select>
今天调用 native 选择。
由于这不是在 Android 或 iOS 上实现的,而是在 native UI 中实现的,网络应用程序是否可以调用 native 日期选择器,即单击时?
这将使我们有可能停止使用 jQuery mobile 和 YUI 等 JavaScript 库。
如果我的问题有任何不清楚的地方,请告诉我。提前谢谢你:-)
最佳答案
由于有些设备支持 <input type="date">
而有些设备不支持,因此需要小心。以下是 2012 年的一些观察结果,今天可能仍然有效:
type="date"
。不支持它的浏览器/设备将忽略将类型设置为 date
并在读回该属性时返回 text
。或者,Modernizr 可用于检测。请注意,仅检查某些 Android 版本是不够的;就像 Android 4.0.3 上的三星 Galaxy S2 确实支持 type="date"
一样,但最新的 Android 4.0.4 上的 Google/Samsung Nexus S 不支持。 <input>
设置为 2012-6-1
。但是,当从 JavaScript 设置值时,它需要前导零: 2012-06-01
。 type="date"
的设备上显示 native 日期选择器时:onclick
处理程序,因此为用户提供常规输入。使用 onfocus
来触发插件似乎效果更好。 onclick
或 onfocus
触发 2012 iOS 插件首先使常规键盘显示,之后日期选择器被放置在其顶部。接下来,使用日期选择器后,仍然需要关闭常规键盘。在显示日期选择器之前使用 $(this).blur()
移除焦点对 iOS 4 有帮助,并且不会影响我测试的其他设备。但是它在 iOS 上引入了一些快速闪烁的键盘,并且在第一次使用时可能会更加困惑,因为那时日期选择器更慢。如果使用插件,则可以通过输入 readonly
来完全禁用常规键盘,但是在同一屏幕上输入其他输入时禁用“上一个”和“下一个”按钮。 iOS 4 插件似乎也没有使 native 日期选择器显示“取消”或“清除”。 allowOldDates
,但 Android 版本实际上并不支持。此外,它将新日期返回为 2012/7/2
而 iOS 版本返回 Mon Jul 02 2012 00:00:00 GMT+0200 (CEST)
。 <input type="date">
,事情也可能看起来很困惑:2012-06-01
,例如 1 Jun. 2012
或 June 1, 2012
(甚至在仍然操作日期选择器的同时立即更新)。但是,运行 Android 4.0.3 的 Galaxy S2 显示丑陋的 2012-6-1
或 2012-06-01
,无论使用哪种语言环境。 关于javascript - 从 iOS/Android 上的网络应用程序调用 native 日期选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4946919/