移动设备上的keyup、keydown和keypress事件不起作用

11

我一直在尝试让它工作,但我不知道发生了什么事,以下是我的代码:

$('#buscar-producto').on('keydown', function(e){
    console.log('hello');
    console.log(e.keyCode);
});

它可以在电脑上运行,但在移动设备上无法运行。

编辑: 我需要在按键时获取keyCode...


可能是 https://dev59.com/R2Qn5IYBdhLWcg3wCzik 的重复问题。 - Roko C. Buljan
@RokoC.Buljan 不,对于这个问题,我甚至没有得到任何输出,就好像事件没有附加到输入上一样... - Aarón Gutiérrez
2个回答

12
keydown事件应该可以使用,但在Android移动设备上使用事件可能会产生不良影响... 为了获取按下键的代码,请使用jQuery的标准化Event.which
测试了 Android Chrome

使用事件(e.which始终返回0,因此在Android设备上似乎存在错误)

jQuery(function($) { // DOM ready and $ alias secured

  $('#buscar-producto').on('input', function(e){
    var key = e.which || this.value.substr(-1).charCodeAt(0);
    alert( key )
  });

});
<input type="text" id="buscar-producto" placeholder="Buscar...">

<script src="https://code.jquery.com/jquery-3.1.0.js"></script>

使用 keydown(按预期工作)

jQuery(function($) { // DOM ready and $ alias secured

  $('#buscar-producto').on('keydown', function(e){
    alert( e.which );
  });

});
<input type="text" id="buscar-producto" placeholder="Buscar...">

<script src="https://code.jquery.com/jquery-3.1.0.js"></script>


我在我的问题中漏掉了一些东西,你能重新阅读一下吗? :) - Aarón Gutiérrez
1
使用Roko提到的input,并使用event.which来获取按键代码。更多信息请参见:https://api.jquery.com/event.which/ - bamtheboozle
8
"keydown"现在出了问题。在手机上以桌面模式运行此页面,以便代码段始终可用,无论按下什么键都会得到229。在桌面上,正确的字符代码会出现。有人知道是什么原因导致这种情况或者如何解决吗? - Niall Murphy

1
你可以尝试使用 event.keyevent.keyCodeevent.which
如果以上都不起作用,那么你可以尝试使用 event.target.value.splice(-1)

对我来说,splice 出了问题,我不得不改用 slice(-1) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接