我目前正在开发一款针对使用apache cordova和HTML5的android和桌面设备的应用程序。默认情况下为数字键盘,但允许使用文本
为了让数字键盘弹出,我用input type="number"
,它工作正常。
但是,输入栏也应该接受strings
。 type=number
的当前功能是ui似乎允许输入字符串,但如果输入无效(例如不是数字),则该元素的值属性不会更改。
有没有办法让移动设备上的数字键盘仍然能够输入文本?
我的初始尝试包括捕获keydown事件并手动设置this.value
属性。我已经尝试过使用jQuerys .val()
,当然还有更多的“原生”方法element.val += char
。这些都不起作用。 UI已更新,但更改未反映在模型中。
编辑
在接下来的家伙努力实现这一目标。
1) HTML解决方案。
正如@LuudJacobs在下面的评论中提到的那样; 目前没有办法决定显示哪个键盘,除了定义类型属性。虽然有些设备有一个返回到字母键盘的按钮,但不是每个设备的情况。并不能可靠地使用。
2)写一个phonegap/cordova插件。
可以编写一个插件来随意显示和隐藏键盘。但是,据我所知,目前没有办法通过程序将其默认为符号键盘。因此,实现的功能类似于在HTML中使用type=number
和type=text
。这种方法的另一个问题是Android设备键盘的多样性,即使用户自己也可以安装自定义键盘。因此键盘的功能可能是未知的。在一台设备上运行什么,可能无法在下一台设备上运行。
3) JS/HTML /帆布溶液
最后...一个可行的解决方案。我建议看看this walkthrough,因为它显示了使用html和js创建键盘的简单方法。另一种选择是使用画布,并自己绘制键盘,但我会想象这会更容易出错,也更难做。
使用'type = number'不是必需的,所需的功能只不过是将数字/符号作为默认键盘弹出。 在我的平板电脑上,即使将type属性设置为数字,也可以更改为普通键盘。虽然这可能(应该??)不适用于其他设备。 – atomman
我不认为你可以依靠所有设备上的工作。 – LuudJacobs
我刚刚在我的手机上进行了测试,结果没有成功。所以'type = number'在这一点上几乎不在图片中。由于我需要数字和字母,但宁愿将数字/符号键盘显示为默认值。 – atomman