JavaScript 退格键无效

JavaScript Backspace Keycode doesn't work

Backspace 的键码不起作用我在 IE 和 Google Chrome 中尝试过它,但它在控制台和警报代码中都没有显示任何内容代码:

$(document).keypress(function(e) {
  console.log(e.which);
  if (e.which == 13) {
    window.alert("enter");
  } else if (e.which == 8) {
    window.alert("backspace");
  } else {
    $("#prompt").append(String.fromCharCode(e.which));
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

keyPress 事件仅针对字符(可打印)键调用,keyDown 事件针对所有键引发,包括不可打印的

$(document).keydown(function(e) {
  console.log(e.which);
  if (e.which == 13) {
    window.alert("enter");
  } else if (e.which == 8) {
    window.alert("backspace");
  } else {
    $("#prompt").append(String.fromCharCode(e.which));
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

References

按键事件仅在可打印键上触发。要打印任何键,您需要使用 onkeydown 事件。它针对所有对象引发,包括不可打印的内容,例如 Control、Shift、Alt、BackSpace 等。在此处阅读有关它们 onkeydown 事件的更多信息:https://api.jquery.com/keydown/ 这是结果的示例:

$(document).keydown(function(e) {

使用keyup代替keypress得到所有的键码

$(document).keyup(function(e) {
  console.log(e.which);
  if (e.which == 13) {
    window.alert("enter");
  } else if (e.which == 8) {
    window.alert("backspace");
  } else {
    $("#prompt").append(String.fromCharCode(e.which));
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

您应该使用 keyup 而不是 keypress 事件,因为某些键(例如退格键)不会触发该事件。

$(document).keyup(function(e) {
  console.log(e.which);
  if (e.which == 13) {
    window.alert("enter");
  } else if (e.which == 8) {
    window.alert("backspace");
  } else {
    $("#prompt").append(String.fromCharCode(e.which));
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>