按时返回“ false”,按时返回“ true”

时间:2019-01-24 09:42:32

标签: javascript jquery

我有一个按钮,单击它需要禁用keyCodes 49,50,51,52,53,54

当我单击keyCode 27时,它需要为所有keyCode返回true

button_size_1.onclick = function() {
  $("html").bind("keydown", function(e) {
    if (
      e.keyCode == 49 ||
      e.keyCode == 50 ||
      e.keyCode == 51 ||
      e.keyCode == 52 ||
      e.keyCode == 53 ||
      e.keyCode == 54
    ) {
      return false;
      console.log("false");
    } else if (e.keyCode == 27) {
      return true;
      console.log("true");
    }
  });
};

2 个答案:

答案 0 :(得分:2)

您要在返回后编写console.log(),因为它将不读取任何后续代码,因此将永远无法工作。您需要先将console.log()放在首位:

if (e.keyCode == 49 || e.keyCode == 50 || e.keyCode == 51 || e.keyCode == 52 || e.keyCode == 53 || e.keyCode == 54) {
  console.log("false");
  return false;
} else if (e.keyCode == 27) {
  console.log("true");
  return true;
}

因此它确实返回true,只是在控制台cuz中没有显示任何有关此简单问题的内容:-)

答案 1 :(得分:0)

您将需要一个变量,该变量指示是否已按下keyCode 27。看下面的例子。每次单击按钮都会重置keyCode27Pressed值。按下具有keyCode 27的键后,它将更改为true,之后,对于所有已定义的键,它将返回true。

button_size_1.onclick = function() {
  let keyCode27Pressed = false;
  $("html").bind("keydown", function(e) {
    if (
      e.keyCode == 49 ||
      e.keyCode == 50 ||
      e.keyCode == 51 ||
      e.keyCode == 52 ||
      e.keyCode == 53 ||
      e.keyCode == 54
    ) {
      if (!keyCode27Pressed) {
          console.log("false");
          return false;
      } else {
          console.log("true");
          return true;
      }
    } else if (e.keyCode == 27) {
      keyCode27Pressed = true;
      console.log("true");
      return true;
    }
  });
};