keyPress事件未在Android手机中触发

use*_*058 11 javascript android backbone.js marionette

我正在使用backbone,marionette我的Application.I使用相同的代码,desktop and mobilekeypress没有工作.mobile我做了一个Jsfiddle进行测试.

如果你在mobile没有开火的情况下打开这个链接,如果你打开desktop它就开始了.我怎么解决这个问题.

谁能帮我.

谢谢.

小智 8

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

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

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


Kon*_*ong 7

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


Inn*_*ion 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;
}
Run Code Online (Sandbox Code Playgroud)

这适用于移动设备

2) onkeyup="numberMobile(event);"

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

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

这个解决方案有一个问题.左侧导航无效.我将尽快更新更合适的解决方案.


use*_*058 3

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

html代码:

<input type='number'/>
Run Code Online (Sandbox Code Playgroud)