2010-11-19 13 views
10

Encontrado este script:desactivar la tecla de entrada en la página, pero no en área de texto

 

function stopRKey(evt) { 
    var evt = (evt) ? evt : ((event) ? event : null); 
    var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
    if ((evt.keyCode == 13) && (node.type=="text")) {return false;} 
} 

document.onkeypress = stopRKey; 


El único problema, sino que también deja entrar ser clave utilizada en el área de texto. Que es una molestia.

que han jugado con el uso de: onkeypress="return handleEnter(this, event)"

Pero nuestras formas son extremadamente complejos, y yo estoy buscando una forma más limpia de hacer las cosas.

Respuesta

25

Es necesario comprobar la nodeName o tagName de l e evento de destino aquí, así:

if (evt.keyCode == 13 && node.nodeName != "TEXTAREA") { return false; } 

me di cuenta después de esto se aceptó que ya está utilizando jQuery, que sólo puede reemplazar todo el código anterior con esto:

$(document).keypress(function (e) { 
    if(e.which == 13 && e.target.nodeName != "TEXTAREA") return false; 
}); 
+0

¿corregimos ese código tal cual o necesitamos cambiar nodeName? – 422

+0

@ 422 - Esto está destinado a reemplazar la línea de código 'if ((evt.keyCode == 13) && (node.type ==" text ")) {return false;}' ... de esta manera se devuelve ' falso' es que ingrese y NO es un '