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

Fly*_*Cat 39 javascript

我只有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
Run Code Online (Sandbox Code Playgroud)

HTML

//no form just a single input field
<input type='text' id='co'>
Run Code Online (Sandbox Code Playgroud)

sac*_*een 64

document.getElementById('foo').onkeypress = function(e){
    if (!e) e = window.event;
    var keyCode = e.keyCode || e.which;
    if (keyCode == '13'){
      // Enter pressed
      return false;
    }
  }
Run Code Online (Sandbox Code Playgroud)

DEMO

  • 我会使用`if(keyCode === 13)`来表示严格等于 (8认同)
  • “keyCode”和“which”均已弃用。现在使用“code”或“key”,并将其与字符串值“Enter”进行比较。 (2认同)

Cas*_*ase 10

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

jQuery的

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

香草JavaScript

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

这样,仅当用户按输入中的回车键时,才检测到回车键。


Spa*_*key 7

使其跨浏览器:

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

    if ( charCode == '13' ) {
      // Enter pressed
      return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此问题:javascript事件e.which?


Gib*_*olt 6

更新,更清洁:使用event.key而不是event.keyCode.没有更多的任意数字代码!

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

Mozilla文档

支持的浏览器