【问题标题】:Get the key that was down while a double click was made in javascript获取在javascript中双击时关闭的键
【发布时间】:2015-01-26 07:31:07
【问题描述】:

我想知道在元素上触发双击事件时按下(按住并按下)哪个键。

事件处理程序允许我获取 alt、shift、meta 和 ctrl 键。如果我想检测“x”是否在双击时被击落...或者任何其他字母或数字。

【问题讨论】:

    标签: javascript jquery double-click


    【解决方案1】:

    如果您想检测 ctrl、alt 或 shift 键,它们会暴露在传递给您的事件对象上。

    $(document).on('dblclick', function(e){
        /*
         * here you could use e.altKey, e.ctrlKey and e.shiftKey - all of them
         * are bools indicating if the key was pressed during the event.
         */
    });
    

    如果您想检测不同的密钥,那么 omar-ali 的回答似乎是正确的做法。

    【讨论】:

    • 是的,我知道...正如我在问题中提到的,al、ctrl、meta 和 shift 是可行的,但是如果...其他字符怎么办。我会再等一会,看看其他人是否有更好的主意,否则我只会将我自己的答案标记为正确。
    【解决方案2】:

    您必须在 keyup 事件之前存储 keycode,并在双击事件时引用当前值。

    var heldKey;
    $(document).on({ 
        'keydown' : function(e) {        
            heldKey = e.which || e.keyCode;
        },
        'keyup': function(e) { 
            heldKey = undefined;
        },
        'dblclick': function(e){
            console.log(String.fromCharCode(heldKey));
        }
    });
    

    【讨论】:

      【解决方案3】:

      一种可能性是这样做,88 = 字母 x.. 但是.. 有没有更好的方法。

      $(document).on('keydown','body',function(e) {
              //console.log(e.keyCode);
              if(e.keyCode==88)
                  keyed = true;
      
          });
      
          $(document).on('keyup','body',function(e) {
              if(e.keyCode==88)
                  keyed = false;
          });
      
          $(document).on('dblclick','body',function(e) {
              if(keyed==true)
                  alert('yes');
              keyed=false;
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-11
        • 2011-02-22
        • 2012-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多