9

我知道有很多关于这个问题的问题已经回答了,但是给出的解决方案都没有对我有用。

我正在为使用三星 Galaxy Tab 的企业开发网站。有很多输入内容是十进制数。所以我尝试了<input type="number" />. 但是导航器显示一个禁用点和逗号的键盘。不仅如此,还会从值中删除 onfocus、点或逗号分隔符。

我已经尝试设置像“0,1”、“0,01”、“0.1”、“0.01”、“any”等这样的步骤,尝试使用与十进制数字匹配的正则表达式的 min、max、模式...... stackoverflow 中没有可供尝试的建议,这太糟糕了哈哈。

我正在使用带有默认浏览器的三星 Galaxy Tab 10.1,但我没有找到任何文档谈论它的 html5 实现的任何限制。所以现在我不知道我是否遗漏了什么,是否有什么我可以尝试的,或者是否知道这是 Galaxy Tab 的错,所以我对此无能为力。

提前非常感谢。

4

3 回答 3

5

您需要扩展您的 webview 类并像这样使用它的对象

public class WebViewExtended extends WebView{

    public WebViewExtended(Context context) {
        super(context);
    }

    public WebViewExtended(Context context, AttributeSet attrs) {
        super(context, attrs);    
    }

    public WebViewExtended(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
        InputConnection connection = super.onCreateInputConnection(outAttrs);
        if ((outAttrs.inputType & InputType.TYPE_CLASS_NUMBER) == InputType.TYPE_CLASS_NUMBER)
        {
            outAttrs.inputType |= InputType.TYPE_NUMBER_FLAG_DECIMAL;
        }

        return connection;
    }

}
于 2014-10-01T05:46:33.263 回答
5

在 android 命名空间中,您可以使用:

 android:inputType="numberDecimal"

这使您可以输入“。”

于 2012-09-28T08:59:04.400 回答
2

数字类型输入的HTML5 规范规定,任何可以被解析为有效浮点数的字符串都应该被允许。这具体包括.以及-+e

所以在三星 Galaxy Tab 10.1 上的实现是无效的。

如果您需要支持此设备,您可能必须使用type="text"并验证该字符串。这不会在具有软件键盘的设备上自动弹出正确的键盘。

<input type="text" pattern="^-?(?:[0-9]+|[0-9]*\.[0-9]+)$" name="NumberInput">
于 2012-09-28T08:22:05.240 回答