2012-07-06 13 views
25

Solo tengo 1 campo de entrada y deseo registrar el evento Change y onKeyPress para detectar cuándo los usuarios finalizan su entrada o presionar la tecla Enter. Necesito usar javascript solamente. Gracias por la ayuda.Cómo detectar cuando el usuario presiona Intro en un campo de entrada

que tengo:

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

Posible duplicado de [Enter evento de prensa clave en JavaScript] (http://stackoverflow.com/questions/905222/enter-key-press-event-in -javascript) – Bae

Respuesta

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

pregunta adicional. ¿Cómo accedo al elemento foo después de detectar el usuario, presiono Entrar? No puedo usar esta palabra clave, se refiere al objeto ventana. Muchas gracias – FlyingCat

+0

'this.value' debería funcionar ... lo hace en mi demo. – sachleen

+7

usaría 'if (keyCode === 13)' para iguales estrictos – bobbyrne01

0

Aquí es un buen enlace que trata sobre este tema y proporciona ejemplos de trabajo a

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/

8

Para que sea navegadores:

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

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

ver este pregunta para más detalles: javascript event e.which?

0

utilizo este código y funciona bien:

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

Ninguna de estas respuestas hasta el momento responder específicamente a esta pregunta. La pregunta está en 2 partes. 1. Entrar es presionado. 2. Los usos se centran en una entrada.

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

De esta forma, ENTER solo se detecta cuando el usuario presiona ENTRAR desde esa entrada.

1

Más reciente y mucho más limpio: use event.key en lugar de event.keyCode. ¡No más códigos de números arbitrarios!

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

Mozilla Docs

Supported Browsers

Cuestiones relacionadas