检测组合键和单键之间的差异

时间:2018-01-11 11:56:00

标签: javascript jquery key keyboard-shortcuts

如何检测单个 CTRL 键与 CTRL + 1 键组合之间的差异?

目前我有以下内容:

 window.addEventListener('keydown', function(e) {
    if(e.keycode === 17){
        alert('crtl only')
    }
    else if (e.ctrlKey && e.keyCode == 49) {
        alert('crtl + 1');
      }
 }

3 个答案:

答案 0 :(得分:0)

当按键被击中时,请记下时间。然后将它与您上次击中键时记下的时间进行比较。

如果差异在您的阈值范围内,请将其视为双倍。否则,不要。

如果差异在您的阈值范围内,请将其视为双倍。否则,不要。

粗略的例子:

foreach($params as $key => $value){
    if(is_numeric($value))
        $statement->bindParam($key,$value,PDO::PARAM_INT);
    else
        $statement->bindParam($key,$value,PDO::PARAM_STR);
}
$statement->execute();

答案 1 :(得分:0)

这应该有效:

    window.addEventListener('keydown', function (e) {
        if (e.ctrlKey && e.keyCode === 49){
            alert('combo hit!');
        }
    }

答案 2 :(得分:0)

debouncekeydown

一起使用
function KeyPress(e) {
  var evtobj = window.event ? event : e;
  debouce(function(evtobj) {
    if (evtobj.keyCode == 65 && evtobj.ctrlKey) {
      console.log("Ctrl+a");
      evtobj.preventDefault();
    } else if (evtobj.ctrlKey) {
      console.log("Only ctrl");
    }
  }, evtobj, 200);
}

<强>演示

function KeyPress(e) {
  var evtobj = window.event ? event : e;
  debouce(function(evtobj) {
    if (evtobj.keyCode == 65 && evtobj.ctrlKey) {
      console.log("Ctrl+a");
      evtobj.preventDefault();
    } else if (evtobj.ctrlKey) {
      console.log("Only ctrl");
    }
  }, evtobj, 200);
}

function debouce(method, eventObj, debounceTime) {
  if (this.timeoutId)
    clearTimeout(this.timeoutId);
  this.timeoutId = setTimeout(function() {
    method(eventObj);
  }, debounceTime);
}
document.onkeydown = KeyPress;