我有两个函数。当按下回车键时,函数正常运行,但当按下escape键时,它就不正常了。退出键的正确数字是多少?

$(document).keypress(function(e) { 
    if (e.which == 13) $('.save').click();   // enter (works as expected)
    if (e.which == 27) $('.cancel').click(); // esc   (does not work)
});

当前回答

$(document).on('keydown', function(event) {
   if (event.key == "Escape") {
       alert('Esc key pressed.');
   }
});

其他回答

试试jEscape插件(从谷歌驱动器下载)

$(document).escape(function() { 
   alert('ESC button pressed'); 
});

或获得跨浏览器的键码

var code = (e.keyCode ? e.keyCode : e.which);
if (code === 27) alert('ESC');
if (code === 13) alert('ENTER');

也许你可以用开关

var code = (e.keyCode ? e.keyCode : e.which);
switch (code) {
    case 27:
       alert('ESC');
       break;
     case 13:
       alert('ENTER');
       break;
}

27是escape键的代码。:)

要找到任何键的键码,使用这个简单的函数:

document.onkeydown = function(evt) {
    console.log(evt.keyCode);
}

只是发布一个更新的答案比e.c ekeycode被认为是DEPRECATED在MDN上。

相反,你应该选择e.key,它支持所有东西的干净名称。下面是相关的抄面食

window.addEventListener("keydown", function (event) {
  if (event.defaultPrevented) {
    return; // Do nothing if the event was already processed
  }

  switch (event.key) {
    case "ArrowDown":
      // Do something for "down arrow" key press.
      break;
    case "ArrowUp":
      // Do something for "up arrow" key press.
      break;
    case "ArrowLeft":
      // Do something for "left arrow" key press.
      break;
    case "ArrowRight":
      // Do something for "right arrow" key press.
      break;
    case "Enter":
      // Do something for "enter" or "return" key press.
      break;
    case "Escape":
      // Do something for "esc" key press.
      break;
    default:
      return; // Quit when this doesn't handle the key event.
  }

  // Cancel the default action to avoid it being handled twice
  event.preventDefault();
}, true);

尝试使用keyup事件:

$(document).on('keyup', function(e) {
  if (e.key == "Enter") $('.save').click();
  if (e.key == "Escape") $('.cancel').click();
});