2010-11-19 2 views
10

trouvé ce script:désactiver la touche entrée à la page, mais pas dans textarea

 

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; 


Le seul problème, il arrête également entrer la clé être utilisée dans textarea. Ce qui est un problème.

J'ai joué avec l'aide: onkeypress="return handleEnter(this, event)"

Mais nos formes sont extrêmement complexes, et je suis à la recherche d'un moyen plus propre de faire les choses.

Répondre

25

Vous devez vérifier les nodeName ou tagName de e événement e cible ici, comme ceci:

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

j'ai remarqué après cela a été accepté que vous utilisez déjà jQuery, vous pouvez simplement remplacer tout le code ci-dessus avec ceci:

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

modifions-nous ce code tel quel ou devons-nous changer nodeName? – 422

+0

@ 422 - ceci est destiné à remplacer le 'if ((evt.keyCode == 13) && (node.type ==" text ")) {return false;}' ligne de code ... de cette façon il retourne ' false's c'est entrer et ce n'est pas un '