【问题标题】:jQuery Keydown/Keyup only works every second timejQuery Keydown/Keyup 仅每秒钟有效一次
【发布时间】:2014-09-18 17:10:16
【问题描述】:

我将 keyup/down 事件绑定到文档。 Keydown 只会每秒钟触发一次,我不知道为什么。我尝试了很多关于类似 SO-Questions 的建议,但没有一个有效。

我的 Javascript:

$(document).on('keyup', function() {
    $('div').removeClass('bar');
});
$(document).on('keydown', function(e) {
    if(e.altKey) {
        $('div').addClass('bar');  // only every second hit will add the class
    }
});

这应该指出问题: http://jsfiddle.net/6yxt53m9/1/

【问题讨论】:

  • 你必须使用alt键吗?
  • 第一次在 ubuntu 和 chrome 下为我工作
  • 是的,它必须是 alt 键
  • 我在 Mac 上使用 Chrome,但这个小提琴对我来说很好用。

标签: javascript jquery


【解决方案1】:

您需要在按键功能中添加return false;

$(document).on('keyup', function() {
    $('div').removeClass('bar');
    return false;
});

$(document).on('keydown', function(e) {
    if(e.altKey) {
        $('div').addClass('bar');
    }
    return false;
});

更新fiddle

【讨论】:

    【解决方案2】:

    使用

    $(document).on('keyup', function(e) {
        $('div').removeClass('bar');
        e.preventDefault();
    });
    

    e.preventDefault();将重置输入

    【讨论】:

    • 将答案标记为已接受,但查看jsfiddle.net/6yxt53m9/8 不确定它是否能解决问题,不过我可能会遗漏一些东西。
    【解决方案3】:

    试试这个。

    $(document).on('keydown', function(e) {
        e.preventDefault();
        if(e.altKey) {
            $('div').addClass('bar');  // only every second hit will add the class
        }
    });
    

    原因是 alt 键发生焦点移动到“自定义和控制 google chorome”按钮

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-05
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多