如何检测用户何时在输入字段中按下 Enter

IT技术 javascript
2021-02-22 18:52:36

我只有 1 个输入字段,我想注册 onChange 和 onKeyPress 事件来检测用户何时完成输入或按下 Enter 键。我只需要使用 javascript。谢谢您的帮助。

我有:

var load = function (){
   //I want to trigger this function when user hit Enter key.
}

document.getElementById('co').onchange=load;   //works great
document.getElementById('co').onKeyPress=load; 
//not sure how to detect when user press Enter

html

//no form just a single input field
<input type='text' id='co'>
6个回答
document.getElementById('foo').onkeypress = function(e){
    if (!e) e = window.event;
    var keyCode = e.code || e.key;
    if (keyCode == 'Enter'){
      // Enter pressed
      return false;
    }
  }

演示

可以改为:if (keyCode == 'Enter' || keyCode == 'NumpadEnter')
2021-04-19 18:52:36
我会if (keyCode === 13)用于严格等于
2021-05-07 18:52:36
补充问题。检测到用户按下 Enter 后如何访问 foo 元素?我不能使用这个关键字,它指的是窗口对象。非常感谢
2021-05-09 18:52:36
不好意思,请问第一个if的目的和意义是什么?if (!e)- 谢谢
2021-05-11 18:52:36
“keyCode”和“which”均已弃用。这些天使用“代码”或“密钥”,并将其与字符串值“Enter”进行比较。
2021-05-14 18:52:36

到目前为止,这些答案都没有具体回答这个问题。问题分为两部分。1. 按下回车键。2. 使用集中在输入上。

查询

$('#input-id').on("keyup", function(e) {
    if (e.keyCode == 13) {
        console.log('Enter');
    }
});

原生 JavaScript

inputId = document.getElementById('input-id');
inputId.addEventListener('keyup', function onEvent(e) {
    if (e.keyCode === 13) {
        console.log('Enter')
    }
});

这样 ENTER 仅在用户从该输入中按下 Enter 时才被检测到。

更新和更干净:使用event.key代替event.keyCode. 没有更多的任意数字代码!

const node = document.getElementById('co');
node.addEventListener('keydown', function onEvent(event) {
    if (event.key === "Enter") {
        return false;
    }
});

Mozilla 文档

支持的浏览器

要使其跨浏览器:

document.getElementById('foo').onkeypress = function(e) {
    var event = e || window.event;
    var charCode = event.which || event.keyCode;

    if ( charCode == '13' ) {
      // Enter pressed
      return false;
    }
}

有关更多详细信息,请参阅此问题:javascript event e.which?

使用 event.keyCode

var code = (e.keyCode ? e.keyCode : e.which);
 if(code == 13) { //Enter keycode
   //Do something
 }

此链接中已经有讨论 jQuery Event Keypress: which key was press?