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

问题描述:

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

我:

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'> 
+0

的[在JavaScript中输入按键事件]可能的复制(http://*.com/questions/905222/enter-key-press-event-in -javascript) – Bae 2016-03-23 21:16:14

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

DEMO

+0

附加问题。在我检测到用户按Enter后如何访问foo元素?我不能使用这个关键字,它指的是窗口对象。非常感谢 – FlyingCat 2012-07-06 16:34:43

+0

'this.value'应该工作..它在我的演示中。 – sachleen 2012-07-06 17:09:59

+7

我会使用'if(keyCode === 13)'严格等于 – bobbyrne01 2015-01-17 23:15:57

下面是讨论这个话题,并提供一个工作的例子一个很好的链接

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/

使用event.keyCode

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

已经有在这个环节的讨论 jQuery Event Keypress: Which key was pressed?

为了让跨浏览器:

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?

我使用此代码,它工作正常:

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

这些答案都不对作为尚未明确回答这个问题。问题在于两部分。 1.输入是按下的。 2.用途集中于输入。

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

这种方式只有在用户按下输入时才检测到ENTER。

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

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

Mozilla Docs

Supported Browsers