我正在尝试探索使用 HTML5 在不同平台上运行本机 Web 应用程序的可能性。目前,一个<input type="date">
字段仅打开 Android 和 iOS 上的标准软键盘。我想未来移动操作系统的软键盘将包括日期选择器等 - 就像<select>
今天调用本机选择。
由于这不是在 Android 或 iOS 上实现的,而是在本机 UI 中实现的,因此 Web 应用程序是否可以调用本机日期选择器(即单击时)?
这将使我们能够停止使用 jQuery mobile 和 YUI 等 JavaScript 库。
如果我的问题有任何不清楚的地方,请告诉我。先感谢您 :-)
多年来,一些设备支持<input type="date">
但其他人则不然,所以需要小心。以下是 2012 年的一些观察结果,今天可能仍然有效:
可以检测是否type="date"
通过设置该属性然后读回其值来支持。不支持的浏览器/设备将忽略将类型设置为date
并返回text
当读回该属性时。或者,现代化 http://modernizr.com/可用于检测。请注意,仅检查某些 Android 版本是不够的;像 Android 4.0.3 上的三星 Galaxy S2 确实支持type="date"
,但最新 Android 4.0.4 上的 Google/Samsung Nexus S 确实如此not.
为本机日期选择器预设日期时,请务必使用设备可识别的格式。如果不这样做,设备可能会默默地拒绝它,在尝试显示现有值时留下一个空的输入字段。就像在运行 Android 4.0.3 的 Galaxy S2 上使用日期选择器一样,它本身可能会设置<input>
to 2012-6-1
6 月 1 日。然而,当从 JavaScript 设置值时,它需要前导零:2012-06-01
.
-
当使用 Cordova (PhoneGap) 之类的东西在不支持的设备上显示本机日期选择器时type="date"
:
确保正确检测内置支持。就像 2012 年运行 Android 4.0.3 的 Galaxy S2 一样,错误地also使用 Cordova Android 插件会导致日期选择器连续显示两次:在第一次出现时单击“设置”后再次显示。
当同一页面上有多个输入时,某些设备会显示“上一个”和“下一个”以进入另一个表单字段。在 iOS 4 上,这不会触发onclick
处理程序,从而为用户提供常规输入。使用onfocus
触发插件似乎效果更好。
在 iOS 4 上,使用onclick
or onfocus
触发 2012 iOS 插件首先显示常规键盘,然后将日期选择器放置在其顶部。接下来,使用日期选择器后,仍然需要关闭常规键盘。使用$(this).blur()
在显示日期选择器之前移除焦点对于 iOS 4 有帮助,并且不会影响我测试的其他设备。但它在 iOS 上引入了键盘的一些快速闪烁,第一次使用时事情可能会更加混乱,因为日期选择器速度较慢。人们可以通过输入来完全禁用常规键盘readonly
如果有人正在使用该插件,但在同一屏幕上输入其他输入时会禁用“上一个”和“下一个”按钮。 iOS 4 插件似乎也没有使本机日期选择器显示“取消”或“清除”。
2012 年,在 iOS 4 iPad(模拟器)上,Cordova 插件似乎无法正确渲染,基本上没有为用户提供任何输入或更改日期的选项。(也许 iOS 4 无法在 Web 视图上很好地呈现其本机日期选择器,或者我的 Web 视图的 CSS 样式可能有一些效果,当然这在真实设备上可能会有所不同:请评论或编辑!)
不过,在 2012 年,Android 日期选择器插件再次尝试使用与 iOS 插件相同的 JavaScript API,其示例使用allowOldDates
,Android版本其实不支持。此外,它返回的新日期为2012/7/2
当iOS版本回归时Mon Jul 02 2012 00:00:00 GMT+0200 (CEST)
.
-
即使当<input type="date">
支持,事情可能看起来很混乱:
iOS 5 的显示效果很好2012-06-01
以本地化格式,例如1 Jun. 2012
or June 1, 2012
(甚至在仍在操作日期选择器的同时立即更新)。然而,运行 Android 4.0.3 的 Galaxy S2 却显示出丑陋的一面。2012-6-1
or 2012-06-01
,无论使用哪个区域设置。
当触摸日期输入或在另一个输入中使用“上一个”或“下一个”时键盘已经可见时,iPad(模拟器)上的 iOS 5 不会隐藏键盘。然后它同时在输入下方显示日期选择器and底部的键盘,以及seems允许来自两者的任何输入。然而,虽然它确实改变了可见值,但键盘输入实际上被忽略了。 (读回值或再次调用日期选择器时显示。)当键盘尚未显示时,触摸日期输入仅显示日期选择器,而不显示键盘。(这在真实设备上可能会有所不同,请评论或编辑!)
设备可能会在输入字段中显示光标,长按可能会触发剪贴板选项,也可能显示常规键盘。单击时,某些设备甚至可能会短暂显示常规键盘,然后更改为显示日期选择器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)