如何在不再按下组合键时进行检测?

时间:2014-07-28 21:01:19

标签: jquery keyboard-events key-bindings

这就是我想要实现的目标(我简化了方案):

  1. 用户按 Ctrl + 标签,显示隐藏的div#my_div
  2. 用户在按住 Ctrl 时发布 Tab ,因此div#my_div仍然可见
  3. 用户按住 Ctrl Tab ,以便div#my_div更改为随机颜色
  4. 用户发布 Ctrl ,隐藏div#my_div
  5. 它类似于Windows上的 Alt + Tab 键盘事件,其中这些键的组合触发了切换窗口的快捷方式。当 Alt 被按下时,该快捷方式仍然可见,并且 Alt 被释放时消失,并且可以多次按下 Tab 。< / p>

    我可以检测 Ctrl + Tab ,但是一旦我发布 Tab Ctrl keyup事件就会触发,即使它被按下了:

    $(window).keydown(function(e)
    {
        if(e.ctrlKey && e.which === 9)
        {
            console.log("ctrl+tab");
            e.preventDefault();
        }
    });
    
    $(window).keyup(function(e)
    {
        if(e.which === 9)
        {
            console.log("tab");
            e.preventDefault();
        }
    });
    
    $(window).keyup(function(e)
    {
        if(e.ctrlKey)
        {
            console.log("end of feature");
            e.preventDefault();
        }
    });
    

    我该如何完成这项任务?

1 个答案:

答案 0 :(得分:1)

您只是错过!处理程序中的keyup:您希望在发布 Ctrl 键时完成, 对?所以!e.ctrlKey

$(window).keyup(function(e)
                {
  if(!e.ctrlKey)
  {
    console.log("end of feature");
    e.preventDefault();
  }
});