虚拟键盘事件

3

有人遇到过键盘事件在虚拟键盘上且按键不是数字时无法触发的问题吗?这个问题出现在运行 Android 6.0.1 的 Nexus 7 平板电脑上。

$('.some.selector').on('keypress', function () {
    console.log('Pressed');
})

当以下情况发生时,上述代码将被触发:键盘按下的是数字键0-9,如果使用iPad或iPhone等其他设备,或者我正在通过PC远程调试我的平板电脑,则可以从键盘上按下实体按键。我在我的平板电脑上使用Chrome 49浏览器。
1个回答

2

https://developer.mozilla.org/zh-CN/docs/Web/Events/keypress

keypress 事件已被弃用,

Chrome不会为已知的键盘快捷键触发 keypress 事件(参考)。哪些键盘快捷键是已知的取决于用户的系统。使用 keydown 事件来实现键盘快捷键。

请尝试使用input 或者 keydown/keyup 事件。

https://developer.mozilla.org/zh-CN/docs/Web/Events/input

https://developer.mozilla.org/zh-CN/docs/Web/Events/keydown

https://developer.mozilla.org/zh-CN/docs/Web/Events/keyup

注意!

当 <input> 或者 <textarea> 元素的值被改变时,DOM input 事件会同步触发。此外,当可编辑元素的内容被改变时,它也会被触发。在这种情况下,事件目标是编辑宿主元素。如果有两个或多个具有 contenteditable 为真的元素,“编辑宿主”是最近的祖先元素,其父元素不可编辑。同样,它也会在 designMode 编辑器的根元素上触发。


那么按下0-9键后触发的按键事件呢? - jano
"keypress" 正常工作,但它已被弃用。这意味着在未来可能不再受支持,最好不要使用它。尝试其他事件,也许它们适合您。 - Andrew Evt
就像你所说的,触发了keydown事件。然而,它总是返回keyCode 229。 - jano
请查看此处 - https://www.reddit.com/r/javascript/comments/3hr100/the_dreaded_keydown_keycode_of_229_for_android/ 或许这会有所帮助。 - Andrew Evt

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