代码之家  ›  专栏  ›  技术社区  ›  Sarbbottam

e、 iOS Safari中的keyCode on keyup事件

  •  3
  • Sarbbottam  · 技术社区  · 10 年前

    使现代化

    到目前为止,我一直在尝试使用物理键盘。这就是造成问题的原因。然而,使用软键盘,它可以按需要工作。 keyup 事件定义明确 keyCode .


    请在以下位置查找代码 this pen

    <input type="text" id="test">

    var test = document.getElementById('test'); test.addEventListener('keyup', function(e) { alert(e.keyCode); });

    iOS safari显示 0 作为按键按下任何按键的代码( 弹起 事件)。任何指针都将非常有用。

    使现代化

    e.keyCode 以及 e.which 与一起工作 keypress 事件,但我无法使用它 弹起 事件

    3 回复  |  直到 10 年前
        1
  •  7
  •   Sarbbottam    10 年前

    e.keyCode 存在于 keyup iOS safari中的事件,在实际设备和模拟器中。 然而,在 模拟器 如果 物理键盘 使用, e、 密钥代码 设置为 zero . enter image description here

        2
  •  4
  •   blex    10 年前

    使用 e.which 而不是 e.keyCode .

    编辑 :要规范化此值,可以使用 e.keyCode || e.which .

        3
  •  0
  •   Eric Boehs    6 年前

    我能让它发挥作用 keyup keydown 通过使用 e.key 其返回按下的键(例如。 / a ).

    我能够通过使用远程调试器检查事件对象来解决这个问题。

    我登录了最新的Chrome、Firefox、iOS Safari和macOS Safari,他们都通过 e、 钥匙 .

    编辑:

    弹起 键盘按下 现在不工作。我想我是用远程调试器或其他什么东西弄的。然而,我已经找到了一种适用于我的用例的替代解决方案。

    我想在 / 按下。我采用了上述绑定到的解决方案 keypress 但由于 弹起 事件尚未启动。简单地呼叫 e.preventDefault() 很好地解决了我的问题。我仍然可以匹配 e.key == '/' 使用 按键 事件也是!