keyPress事件未在Android手机中触发

问题描述 投票:11回答:5

我使用backbone,marionette作为我的Application.I使用相同的代码为desktop and mobile,但keypress不在mobile工作。我做了Jsfiddle测试。

如果你在mobile事件中打开此链接未触发,如果你在desktop中打开它就会触发。如何解决这个问题。

谁能帮我。

谢谢。

javascript android backbone.js marionette
5个回答
8
投票

Chrome移动版暂时不支持正确的按键事件。这有一个长期的错误:

https://code.google.com/p/chromium/issues/detail?id=118639

我认为它应该在第38版修复。


5
投票

我将在输入框中建议两个事件。

这将适用于桌面webbrowser。

1)onkeypress = return isNumberKey(event);

function isNumberKey(e)
{
    var evt = e || window.event;

    if(evt) 
    { 
        var charCode = evt.keyCode || evt.which; 
    }
    else 
    { 
        return true; 
    }

    if((charCode > 47 &&  charCode < 58) || charCode == 9 || charCode == 8 || charCode ==46 || charCode ==37 || charCode==39)
    { 
        return true; 
    }

    return false;
}

这适用于移动设备

2)onkeyup="numberMobile(event);"

function numberMobile(e){
    e.target.value = e.target.value.replace(/[^\d]/g,'');
    return false;
}

在输入框中应用这两个事件它将起作用。唯一的缺点是,它使它变慢。但是现在我们必须忍受它。

此解决方案存在一个问题。左侧导航无效。我将尽快更新更合适的解决方案。


1
投票

在browserstack上测试。似乎对我有用。这是你的要点的链接:

http://www.browserstack.com/start#os=android&os_version=4.1&device=Samsung+Galaxy+S+III&zoom_to_fit=true&full_screen=true&url=http%3A%2F%2Fjsfiddle.net%2F33Snz%2F3%2Fembedded%2Fresult%2F&speed=1&start=true

你能知道你测试的具体android设备和浏览器吗?


1
投票

最后我发现了一个问题,但它在opera中不起作用。而不是编写数字字段的代码。我只是在html文件中的输入字段中添加了一个属性type ='number'。现在只有数字小键盘即将到来。所以它满足我的要求。这是JsFiddle

HTML代码:

<input type='number'/>

0
投票

似乎keypress事件已被弃用(请参阅https://developer.mozilla.org/en-US/docs/Web/Events/keypress),现在最好在所有浏览器支持之前使用keydown事件。

© www.soinside.com 2019 - 2024. All rights reserved.