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();
}
});
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();
}
});
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
.
Utilisation event.keyCode
dans l'événement keydown
:
$('#comment').keydown(function(event) {
if(event.keyCode == 13) return false;
//carry on...
});
$('#comment').keypress(function(event) {
if (event.keyCode == 13) {
event.preventDefault();
}
});
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.
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?
Essayez avec .keypress
et utilise return false
;
Bonne chance!