输入类型=数字键盘在Galaxy Tab中禁用了点

时间:2012-09-28 07:52:24

标签: android html5 android-softkeyboard galaxy-tab

我知道有很多问题已经回复了,但是没有一个解决方案对我有用。

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

我已经尝试设置“0,1”,“0,01”,“0.1”,“0.01”,“任意”等步骤,尝试使用匹配十进制数的正则表达式的min,max,pattern ...在stackoverflow中没有任何建议可以尝试,这很糟糕哈哈。

我正在使用带有默认浏览器的三星Galaxy Tab 10.1,但我没有找到任何文件谈论它的html5实现的任何限制。所以现在我不知道是否有我遗漏的东西,如果有什么我可以尝试,或者如果有什么东西知道Galaxy Tab的错,那么我就什么也做不了。

提前多多感谢。

3 个答案:

答案 0 :(得分:5)

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

 android:inputType="numberDecimal"

这使您可以输入“。”

答案 1 :(得分: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;
    }

}

答案 2 :(得分:2)

HTML5 specification for input with a type of number表示应该允许任何可以解析为valid floating point number的字符串。具体包括.以及-+e

因此,三星Galaxy Tab 10.1上的实施无效。

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

<input type="text" pattern="^-?(?:[0-9]+|[0-9]*\.[0-9]+)$" name="NumberInput">