我正在try 使用HTML5在不同平台上运行本地Web应用的可能性.目前,<input type="date">字段只能打开Android和iOS的标准软键盘.我猜想future 移动操作系统的软键盘将包括日期 Select 器等等--就像今天<select>调用原生SELECT一样.

既然这不是在Android或iOS上实现的,而是在原生UI中实现的,那么Web应用程序是否有可能调用原生日期 Select 器,即当点击的时候?

这将使我们有可能停止使用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支持not.

  • 为本机日期选取器预设日期时,请确保使用设备可识别的格式.如果不这样做,设备可能会悄悄地拒绝它,在try 显示现有值时留下一个空的输入字段.就像在运行安卓4.0.3的Galaxy S2上使用日期 Select 器一样,0.3本身可能会将6月1日的<input>设置为2012-6-1.但是,当从JavaScript设置值时,它需要前导零:2012-06-01.

  • 在不支持type="date"的设备上使用Cordova(PhoneGap)等设备显示本机日期 Select 器时:

    • 请确保正确检测内置支持.就像2012年在运行Android 4.0.3的Galaxy S2上一样,错误地also次使用Cordova Android插件将导致连续两次显示日期 Select 器:在第一次单击"Set"之后再次显示日期 Select 器.

    • 当同一页上有多个输入时,一些设备会显示"上一个"和"下一个"以进入另一个表单域.在iOS 4上,这不会触发onclick处理程序,因此会为用户提供常规输入.使用onfocus触发插件似乎效果更好.

    • 在iOS4上,使用onclickonfocus触发2012 ios插件首先会显示常规键盘,之后会在上面放置日期 Select 器.接下来,在使用日期 Select 器之后,仍然需要关闭常规键盘.在显示日期 Select 器之前使用$(this).blur()移除焦点对iOS4很有帮助,不会影响我测试的其他设备.但它在iOS上引入了一些快速的键盘闪烁,而且在第一次使用时情况可能会更加混乱,因为当时的日期 Select 器速度更慢.如果正在使用插件,则可以通过进行输入readonly来完全禁用常规键盘,但是当在同一屏幕上键入其他输入时,这禁用了"上一步"和"下一步"按钮.iOS4插件似乎也没有让本地日期 Select 器显示"取消"或"清除".

    • 在iOS4iPad(模拟器)上,2012年Cordova插件似乎无法正确渲染,基本上没有给用户任何输入或更改日期的选项.(Maybe iOS 4 doesn't render its native date picker nicely on top of a web view, or maybe my web view's CSS styling has some effect, and surely this might be different on a real device: please comment or edit!)

    • 尽管在2012年,Android date picker插件try 使用与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. 2012June 1, 2012(甚至在仍然操作日期 Select 器的情况下立即更新).然而,运行安卓4.0.3的Galaxy S2显示了丑陋的2012-6-12012-06-01,无论使用哪种语言环境.

    • 当touch 日期输入或在另一个输入中使用"上一个"或"下一个"时,iPad(模拟器)上的iOS 5不会隐藏键盘.然后,它会同时在输入框下方显示日期 Select 器and,在底部显示键盘,并在输入框下方显示seems,以允许从两者进行任何输入.然而,尽管它确实改变了可见值,但键盘输入实际上被忽略了.(在读回值或再次调用日期 Select 器时显示.)当键盘尚未显示时,touch 日期输入仅显示日期 Select 器,而不是键盘.(This might be different on a real device, please comment or edit!)

    • 设备可能会在输入字段中显示光标,长按可能会触发剪贴板选项,可能还会显示常规键盘.单击时,某些设备甚至可能会在更改为显示日期选取器之前显示常规键盘一瞬间.

Ios相关问答推荐

实例方法wait在异步上下文中不可用;请改用TaskGroup;这是Swift 6中的错误''

如何遮罩,动画和添加阴影到CAShapeLayer?

如何将模糊输入/模糊输出添加到SwiftUI中的非对称过渡?

OBJC @selector 在另一个实现中不起作用

使用 Objective-C 创建 iOS 框架

为什么applicationState发布者只发布一次?

在 SwiftUI 中放置全局 NavigationPath 的位置

Swift Combine 防止初始值触发接收器并同时防止重复?

如何在Collection 后更改并保留按钮 colored颜色 ,然后在 SwiftUI 中切换回来?

在 SwiftUI 中打开 PDF

SwiftUI - 使用切换switch 切换键盘类型(默认/数字)?

如何在不支持并发的自动关闭中修复'async'调用?

如何在 SwiftUI 上制作可点击的map route?

UILabel - 字符串作为文本和链接

如何在 iPhone 中为透明的 PNG 图像着色?

直接下载Xcode模拟器

每个版本的 iOS 都附带什么版本的移动 Safari?

UITextView 内容插图

UIView 中的 safeAreaInsets 在 iPhone X 上为 0

在 NSUserDefaults 中保存图像?