2012-07-06 79 views
25

我只有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://stackoverflow.com/questions/905222/enter-key-press-event-in -javascript) – Bae 2016-03-23 21:16:14

回答

53
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

8

为了让跨浏览器:

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?

0

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

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

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

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

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

1

更新和更清洁:使用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

相关问题