javascript - 如何判断插入键是否被按住

标签 javascript jquery events keydown

我试图在我的应用程序中捕获某些按键事件,但前提是没有同时按下“控制”键。我不想遇到屏幕阅读器键盘快捷方式的问题。 ShiftCtrlAlt 很容易检查,因为它们在 javascript 事件中,但我还需要检查 InsWindows 键以及任何 Mac 控制键。

这是我到目前为止所得到的,它按预期工作,但当 InsWindows 被按住时,我的事件仍然被触发。

handleKeydown: function(event) {
  var comboKeyPressed = event.ctrlKey || event.shiftKey || event.altKey;
  if(!comboKeyPressed && event.keyCode === $.ui.keyCode.HOME) {
    event.preventDefault();
    this.$('>ul>li:last').attr('tabindex', -1);
    this.$('>ul>li:first').attr('tabindex', 0).focus();
  } else if (!comboKeyPressed && event.keyCode === $.ui.keyCode.END) {
    event.preventDefault();
    this.$('>ul>li:first').attr('tabindex', -1);
    this.$('>ul>li:last').attr('tabindex', 0).focus();

  }
}

有没有一种方法可以轻松检查其他控制键,或者我是否需要捕获这些事件并在某些全局 bool 值(如 this.isInsertPressed)中保留它们?

最佳答案

你可以这样做:

var keysPressed = {};
var keys = { insert: 45 };    
$(window).keydown(function(e) { keysPressed[e.which] = true; });
$(window).keyup(function(e) { keysPressed[e.which] = false; });

然后:

if (keysPressed[keys.insert]) {
    // insert key is currently down
}

关于javascript - 如何判断插入键是否被按住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18005422/

相关文章:

javascript - jQuery.csv() 插件未知错误

c# - WPF - 声明自定义路由事件并监听它

javascript - 如何将 HTML 表单的值放入 "custom"URL?

javascript - 使用图像 url 从 HTML 字符串中删除图像标签

javascript - 如何从 JavaScript 对象中删除 "Key"和 "Value"文本?

jquery - MVC3 Razor View 无法处理 jQuery CDN 后备脚本

android - 如何从android中的日历事件中获取开始时间和结束时间?

c# - WPF:无法让我控制焦点

javascript - 使用 JavaScript 文件创建 Ruby gem (Rails 3)

javascript - 拖拽轮播时如何调用函数?