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

How to detect when the user presses Enter in an input field

本文关键字:字段 输入 Enter 何时 何检测 检测 用户      更新时间:2023-09-26

我只有一个输入字段,我想注册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'>
document.getElementById('foo').onkeypress = function(e){
    if (!e) e = window.event;
    var keyCode = e.code || e.key;
    if (keyCode == 'Enter'){
      // Enter pressed
      return false;
    }
  }

演示

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

Jquery

$('#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')
    }
});

这样,只有当用户按下输入FROM时,才会检测到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事件e.which?

使用event.keyCode

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

此链接中已存在讨论jQuery Event Keypress:按下了哪个键?

这里有一个很好的链接,讨论了这个主题,并提供了一个工作示例

function DetectEnterPressed(e) {
var characterCode
if(e && e.which){ // NN4 specific code
e = e
characterCode = e.which
}
else {
e = event
characterCode = e.keyCode // IE specific code
}
if (characterCode == 13) return true // Enter key is 13
else return false
}

http://hspinfo.wordpress.com/2008/09/01/using-javascript-detect-enter-key-pressed-event-in-a-textbox-and-perform-the-action/

我使用这段代码,它运行良好:

document.getElementById("theIdHere").onkeypressed = 
function() {
     if(this.event.which === 13)
        console('passed');
}

今天你可以这样做:

document.getElementById('co').addEventListener('keydown',
  e => !e.repeat && e.keyCode === 13 && load());

请注意,load()将运行一次。