【发布时间】:2014-06-30 22:24:15
【问题描述】:
我目前正在使用 apache cordova 和 HTML5 开发针对 android 和桌面设备的应用程序。
为了让数字键盘弹出,我使用了input type="number",效果很好。
但是,输入字段也应该接受strings。 type=number 的当前功能是 ui 似乎允许输入字符串,但如果输入无效(例如不是数字),则元素的 value 属性不会更改。
有没有办法在移动设备上获取数字键盘,同时仍然可以输入文字?
我的初始尝试包括捕获 keydown 事件和手动设置 this.value 属性。我已经尝试过使用 jQuerys .val(),当然还有更“原生”的方法 element.val += char。这些都不起作用。 UI 已更新,但更改未反映在模型中。
编辑
对于下一个试图实现这一目标的人。
1) HTML 解决方案。
正如@LuudJacobs 在下面的 cmets 中提到的那样; 除了定义类型属性外,目前无法决定显示哪个键盘。 虽然有些设备有一个返回字母键盘的按钮,但并非所有设备都如此。并且不能可靠地使用。
2) 编写 phonegap/cordova 插件。
可以编写一个插件来随意显示和隐藏键盘。但是,据我所知,目前没有办法以编程方式告诉它默认使用符号键盘。因此实现的功能类似于在 HTML 中使用type=number 和type=text。这种方法的另一个问题是安卓设备键盘的多样性,甚至用户自己也可以安装他们的自定义键盘。因此,键盘的功能是未知的。在一台设备上有效的东西,可能在下一个设备上无效。
3) JS/HTML/Canvas 解决方案
终于...一个可行的解决方案。我建议看一下this walkthrough,因为它展示了一种仅使用 html 和 js 创建键盘的简单方法。另一种选择是使用画布并自己绘制键盘,但我想这更容易出错且更难做到。
【问题讨论】:
标签: android html cordova keyboard html-input