web-dev-qa-db-fra.com

jQuery: Empêcher la touche entrée

J'essaie d'empêcher le enter clé d'être mis dans une zone de texte, mais il ne semble pas fonctionner.

$('#comment').keyup(function(event) {
  if (event.text.charCodeAt() == '10') {
     event.preventDefault();
   }
});
41
James T

J'ai écrit une petite démonstration sur jsfiddle.net , où vous pouvez essayer ce code

Tout le monde a la bonne réponse :)

$('#comment').keypress(function (event) {
    if (event.keyCode === 10 || event.keyCode === 13) {
        event.preventDefault();
    }
});
85
kajo

Vous ne pouvez pas annuler un événement keyup. Vous pouvez cependant annuler les événements keydown et keypress. Dans la documentation, notez que sous "Informations sur l'événement", "Annule" est "Non" pour keyup:

L'utilisation de keydown vous permet d'annuler beaucoup plus de clés que keypress, mais si vous ne souhaitez pas annuler tant que la clé n'a pas été levée, keypress est ce que vous voulez. Heureusement pour vous, la touche Entrée est l'une des clés annulables pour l'événement keypress.

14
gilly3

Utilisation event.keyCode dans l'événement keydown:

$('#comment').keydown(function(event) {
   if(event.keyCode == 13) return false;
   //carry on...
});
7
Jacob Relkin
$('#comment').keypress(function(event) {
    if (event.keyCode == 13) {
        event.preventDefault();
    }
});
3
ThiefMaster

Bien que les réponses fournies ici empêcheront quelqu'un de taper un retour chariot, cela n'empêchera pas quelqu'un d'en coller un.

Vous auriez besoin de faire un post-traitement du texte (en javascript ou côté serveur) pour les supprimer.

http://jsfiddle.net/we8Gm/

Mais la question est, pourquoi? Pourquoi ne pas simplement utiliser <input type="text"></input> qui s'en occupe automatiquement car il s'agit d'un élément d'entrée sur une seule ligne?

2
Jeff B

Essayez avec .keypress et utilise return false;

Bonne chance!

1
Gonzalo Larralde