无法捕捉HTC手机虚拟键盘上的输入按钮

时间:2013-08-05 03:52:30

标签: javascript html cordova enter

目前,我正在使用HTML,js和phonegap编写Android应用程序。这是我用来捕捉虚拟键盘上的输入按钮的功能:

function handleFormKeypress(e) 
{
var currentInputElement = $(e.target);

if(e.keyCode == 13 || e.keyCode == 10) 
{
    Log("handleFormKeypress - Go pressed")

    //this needs to be checks as passing in the 'submitButton' is optional
    if (e.data != undefined) 
    {
        if (e.data.handler != undefined) 
        {
            e.data.handler();
        }
    }

    currentInputElement.blur();

    e.stopImmediatePropagation();
    return false;
} 

}

如您所见,我抓住了键盘的键码。使用Phonegap转换为Android应用程序,它应该捕获Go按钮或虚拟键盘的Next按钮。

我的输入字段的类型是数字:

<input type="number" id="blah blah blah"/>

在这种情况下,android虚拟键盘会显示带有下一个按钮的数字键盘。

我在几部Android手机上测试过。当我点击下一个按钮时,它会按照我的预期跳转到下一页。但在一些HTC手机上,实际上是HTC Nexus One和HTC One X,它什么也没做。

有人在这里有一些想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如何同时使用e.keyCodee.which

添加内联if语句以检查两者:

function handleFormKeypress(e) 
{
    var currentInputElement = $(e.target);
    var keyCode = (e.keyCode ? e.keyCode : e.which);

    if(keyCode == 13 || keyCode == 10) 
    {
        Log("handleFormKeypress - Go pressed")

        //this needs to be checks as passing in the 'submitButton' is optional
        if (e.data != undefined) 
        {
            if (e.data.handler != undefined) 
            {
                e.data.handler();
            }
        }

    currentInputElement.blur();

    e.stopImmediatePropagation();
    return false;
}