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

Posted

技术标签:

【中文标题】keyup、keydown 和 keypress 事件在移动设备上不起作用【英文标题】:keyup, keydown and keypress events not working on mobile 【发布时间】:2021-12-23 06:26:21 【问题描述】:

我一直试图让它工作,但我不知道发生了什么,我有代码:

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

它可以在计算机上运行,​​但不能在移动设备上运行..

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

【问题讨论】:

***.com/questions/17139039/…的可能重复 @RokoC.Buljan 不,对于这个问题,我什至没有得到输出,好像事件没有附加到输入...... 【参考方案1】:

keydown 应该工作,但您可以使用input 事件,这似乎对 android 移动设备产生了不良影响... 要获取按下的键的代码,请使用 jQuery 的规范化 Event.which

Android Chrome 已测试:

使用input 事件(e.which 总是给出0,所以这似乎是安卓设备上的一个错误)

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>

【讨论】:

我在我的问题中遗漏了一些内容,请您重新阅读一下吗? :) 使用 input 如 Roko 提到的并使用 event.which 获取密钥代码。查看更多信息:api.jquery.com/event.which keydown 现在已损坏。使用桌面模式在移动设备上运行此页面,以便 sn-p 可用,无论按什么,总是会给出 229。在桌面上,出现了正确的字符代码。有谁知道是什么原因造成的或解决方法是什么?

以上是关于keyup、keydown 和 keypress 事件在移动设备上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

WinForm中的键盘按键 KeyDown,KeyPress和KeyUp事件

keyup、keydown、keypress 和 input 事件有啥区别?

KeyPress和KeyDown/KeyUp

JQuery——键盘事件.keydown().keyup()和.keypress()

jquery 键盘事件 keypress() keydown() keyup()

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