javascript - 如何在带有蓝牙键盘的 iPad 上使用 JavaScript 检测方向键

标签 javascript jquery ios ipad keyboard-events

当使用蓝牙键盘时,我无法在 iPad 上的 Safari 和 Chrome 中找到检测文本字段中箭头键的方法。
使用此测试 HTML 和 JavaScript,触摸输入字段使其获得焦点。
使用箭头键没有任何反应,但键入字母和数字并发生 keydown 事件。

<!DOCTYPE html>
<html>
<head>
  <title>Test page.</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
  <form>
    <input id="input" style="width: 600px;" type="textarea" />
  </form>
  <div id="keydisp" style="width 600px; height: 50px"></div>
  <script type="text/javascript">
    $(document).keydown(function(event) {
      var keyCode = event.which;
      document.getElementById("keydisp").innerHTML = "key pressed: " + keyCode;
    });
  </script>
</body>
</html>

是否可以检测到箭头?

最佳答案

我知道这可能看起来是一个冷酷的答案,如果是这样,我深表歉意。

几周前我一直在努力解决这个问题,最终放弃了。
无数个小时试图让 iPad 上的箭头键触发 onkeydown 事件似乎完全有效,就好像它们甚至没有被按下一样。

游戏(或类似游戏)的一个很好的替代方法是使用 WSAD 键,我就是这样做的

WSAD 键的代码是:

w: 87,
s: 83,
a: 65,
d: 68

这是您通常检测何时按下 WSAD 键的方式:

$(document).on("keydown", function(event) {
  if (event.which == 87) {
    // W key Has Been Pressed
  } else if (event.which == 83) {
    // S key Has Been Pressed
  } else if (event.which == 65) {
    // A key Has Been Pressed
  } else if (event.which == 68) {
    // D key Has Been Pressed
  }
  // prevent the default action
  // event.preventDefault(); // This is optional.
});

方向键的代码是:

up: 38,
down: 40,
left: 37,
right: 39

这是您通常检测何时按下箭头键的方式:

$(document).on("keydown", function(event) {
  if (event.which == 37) {
    // Left Arrow Has Been Pressed
  } else if (event.which == 38) {
    // Up Arrow Has Been Pressed
  } else if (event.which == 39) {
    // Right Arrow Has Been Pressed
  } else if (event.which == 40) {
    // Down Arrow Has Been Pressed
  }
  // prevent the default action
  event.preventDefault();
});

注意:您只能使用 onkeydown 事件来检查箭头键是否已被按下。

您还可以使用 var key = event.keyCode ? event.keyCode : 事件.which;
引用 Peter Darmis :

Versions of Opera before 10.50 messes up by returning non-zero event.which values for four special keys (Insert, Delete, Home and End), meaning using event.keyCode may be more "fail safe" across older browsers.
Source

引用 jQuery api:

The event.which property normalizes event.keyCode and event.charCode. It is recommended to watch event.which for keyboard key input. For more detail, read about event.charCode on the MDN.
Source

祝你好运,万事如意

关于javascript - 如何在带有蓝牙键盘的 iPad 上使用 JavaScript 检测方向键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30221024/

相关文章:

javascript - 在 D3 图表中设置条形的最小高度

javascript - 错误回调 {"readyState":4 ,"status":200 ,"statusText" :"success"}

javascript - Split Flap 文本动画 Jquery

jquery - 如何用 jquery 实现这个下拉菜单

android - 使用 URL 方案的 Google Pay UPI 集成 - iOS

javascript - 获取所有已选中和未选中状态的复选框的列表

javascript - 使用 jQuery 捕获文本区域的文本值

javascript - 如何禁用图像谷歌自定义搜索引擎 cse 上的链接?

ios - AFNetwoking POST 调用返回 500 内部服务器错误,但服务器获得了请求参数

ios - 取消按钮在 UIImagePickerView 中不起作用