【问题标题】:Numeric keyboard as default, but allow text默认为数字键盘,但允许输入文字
【发布时间】:2014-06-30 22:24:15
【问题描述】:

我目前正在使用 apache cordova 和 HTML5 开发针对 android 和桌面设备的应用程序。

为了让数字键盘弹出,我使用了input type="number",效果很好。

但是,输入字段也应该接受stringstype=number 的当前功能是 ui 似乎允许输入字符串,但如果输入无效(例如不是数字),则元素的 value 属性不会更改。

有没有办法在移动设备上获取数字键盘,同时仍然可以输入文字?

我的初始尝试包括捕获 keydown 事件和手动设置 this.value 属性。我已经尝试过使用 jQuerys .val(),当然还有更“原生”的方法 element.val += char。这些都不起作用。 UI 已更新,但更改未反映在模型中。

编辑

对于下一个试图实现这一目标的人。

1) HTML 解决方案。

正如@LuudJacobs 在下面的 cmets 中提到的那样; 除了定义类型属性外,目前无法决定显示哪个键盘。 虽然有些设备有一个返回字母键盘的按钮,但并非所有设备都如此。并且不能可靠地使用。

2) 编写 phonegap/cordova 插件。

可以编写一个插件来随意显示和隐藏键盘。但是,据我所知,目前没有办法以编程方式告诉它默认使用符号键盘。因此实现的功能类似于在 HTML 中使用type=numbertype=text。这种方法的另一个问题是安卓设备键盘的多样性,甚至用户自己也可以安装他们的自定义键盘。因此,键盘的功能是未知的。在一台设备上有效的东西,可能在下一个设备上无效。

3) JS/HTML/Canvas 解决方案

终于...一个可行的解决方案。我建议看一下this walkthrough,因为它展示了一种仅使用 html 和 js 创建键盘的简单方法。另一种选择是使用画布并自己绘制键盘,但我想这更容易出错且更难做到。

【问题讨论】:

    标签: android html cordova keyboard html-input


    【解决方案1】:

    正如HTML5 spec 中所解释的,您可以input type="number" 中拥有除有效浮点数之外的任何内容。所以你不能。附注:当用户只有数字键盘时,他们将如何输入文本?

    【讨论】:

    • 使用type=number 不是必需的,所需的功能只是默认弹出带有数字/符号的键盘。在我的平板电脑上,即使 type 属性设置为 number,您也可以更改为普通键盘。虽然这可能(应该??)在其他设备上不起作用。
    • 我刚刚在我的手机上测试了它,但它并没有工作。所以type=number 在这一点上几乎是不可能的。因为我需要数字和字母,但更希望将数字/符号键盘显示为默认值。
    • 除了定义type-attribute 之外,目前无法确定显示哪个键盘。也许您可以在网站上添加一个 html/js 数字键盘来帮助您的用户?
    • html/js 解决方案是我现在必须考虑的问题。
    • @LuudJacobs,“如果用户只有数字键盘,他们将如何输入文本?” +1
    猜你喜欢
    • 2018-08-17
    • 2021-10-25
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    相关资源
    最近更新 更多