javascript - 浏览器中不可见元素的键盘快捷键

标签 javascript css keyboard markup

我想为我页面上的按钮分配键盘快捷键。

事实证明,直接在标记中执行此操作会导致危险的副作用:即使按钮不可见,快捷方式也会触发点击事件。

我可以在我的前端 Controller 中动态设置/取消设置快捷方式,但这似乎有点笨拙。有更优雅的方法吗?非常感谢!

最佳答案

你应该能够做这样的事情

var shortcuts = {
    49: document.getElementById("button"), //character "1"
    50: document.getElementById("button2") //character "2"
};

var isVisible = function(el) {
    return !(el.style.display === "none" || el.style.visibility === "hidden");
};

var bindEvent = function(el, event, handler) {
  if (el.addEventListener){
    el.addEventListener(event, handler, false); 
  } else if (el.attachEvent){
    el.attachEvent('on'+event, handler);
  }
};

bindEvent(window, "keydown", function(e) {
    var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
    if(typeof shortcuts[charCode] !== "undefined" && shortcuts[charCode] && isVisible(shortcuts[charCode])) {
        shortcuts[charCode].click();
    }
});

http://jsfiddle.net/Z2baQ/

关于javascript - 浏览器中不可见元素的键盘快捷键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14085571/

相关文章:

javascript - 将变量传递到下一页,无需表单或 URL 扩展

javascript - 获取点击按钮的id javascript

css - 跨浏览器的相同文本的不同宽度

java - 如何强制弹出 Android 键盘?

sql - 是否可以禁用 SQL Server Management Studio 2008 中的 'shift+space' 快捷方式?

ios - 启用键盘时使 iOS 页面可滚动

javascript - Sequelize : how to do a WHERE condition on joined table with left outer join

javascript - JavaScript/jQuery 中的范围

HTML 并排输入文本

css 浏览背景图片