javascript - String.fromCharCode 在 jQuery 中不显示 'Enter' 的任何内容

标签 javascript jquery

我正在做一个 JavaScript 计算器,并尝试将按键事件映射到适当的按钮事件。因此,当用户按下 1 时,$('#one').click 将被触发,依此类推。我的代码基本上是这样做的:

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

    var keyPressed = (String.fromCharCode(e.which));
    switch(keyPressed) {
        case '1':
            $('#one').trigger('click');
            break;
        case '2':
        // etc.....
    }
}

当我按下 Enter 键时,我从 e.which 中得到 13 作为字符代码。但是,当我将 13 传递给 String.fromCharCode 时,我得到一个空字符串(实际上,我不确定它是空字符串还是带空格的字符串,我不太明白)。有人可以解释为什么会发生这种情况吗?如果可能的话,如何在 case 语句的逻辑中捕获“Enter”按键(我知道我可以使用一个对象并将键/按键字符串映射到值/buttonID 以避免出现这种情况)?

最佳答案

我知道这已经过时了,但今天我们可以使用此事件的一些其他属性。

例如,如果用户按数字“1”键,则:

event.charCode || event.keyCode || event.which // will give us 49
event.key // will give us "1"
event.code // will give us DigitOne

运行示例:

const input = document.getElementById("myInput");

input.addEventListener('keypress', event => {
  console.clear();
  const {key, code, charCode, keyCode, which} = event;
  console.log("key - ",key);
  console.log("code - ",code);
  console.log("charCode - ",charCode);
  console.log("keyCode - ",keyCode);
  console.log("which - ",which);
  input.select();
});
<input id="myInput" value="" placeholder="type me"  />

docs

关于javascript - String.fromCharCode 在 jQuery 中不显示 'Enter' 的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33986014/

相关文章:

javascript - CSS 下拉菜单颜色更改器(mutator)

javascript - javascript 中 table.where 对象的运算符

javascript - jQuery Mobile - 过滤数据-filtertext 和文本

javascript - Bootstrap 折叠小部件不起作用

javascript - 为什么这个 jQuery 重置方法不能正常工作?

javascript - 奇怪的 html 错误

javascript - URL 使得正则表达式测试卡住

javascript - 如何渲染标题或一些数据然后整个页面

javascript - 为什么我的无序列表的第一项不包含链接?

javascript - HTML 不会从 <head> 加载文件