J'ai besoin que la touche Entrée soit active pour la zone de texte uniquement sur mon code HTML form. Mon code Javascript/jQuery ressemble à ceci pour l'instant :

$('#formId').on('keyup keypress', function (e) {
var keyCode = e.keyCode || e.which;
if (keyCode === 13) {
//if this is textarea return true;
    e.preventDefault();
    return false;
}
});

Je dois vérifier si l'accent est mis sur la zone de texte à l'intérieur de ce formulaire et permettre à l'utilisateur d'appuyer sur Entrée.

0
user3172616 3 nov. 2020 à 18:21

1 réponse

Meilleure réponse

J'utiliserais l'événement keydown car il est déclenché en premier.

Il suffit d'ajouter une comparaison supplémentaire pour vérifier le tagName de l'élément où l'événement s'est déclenché.

$('#formId').on('keydown', function(e) {
  var keyCode = e.keyCode || e.which;
  var tag = e.target.tagName
  if (keyCode === 13 && tag !=="TEXTAREA") {
    console.log("Enter prevented")
    e.preventDefault();
    return false;
  }else{
    console.log("Enter is ok...")
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="formId">
<input type="text" value="ENTER does not work here"/><br>
<textArea>ENTER works here</textarea>
</form>
3
Louys Patrice Bessette 3 nov. 2020 à 15:32