web-dev-qa-db-fra.com

obtenir la valeur d'entrée après une pression sur une touche

J'ai un <input type="text"> et j'ai besoin d'appeler une fonction après que le texte de la zone de texte a été modifié (actions incluses au cours des manipulations de keydown et de keypress de jQuery).

Si j'appelle ma fonction depuis le gestionnaire jQuery, je vois la valeur (e.target.value) telle qu'elle était avant l'ajout de l'entrée. Comme je ne veux pas ajouter manuellement l'entrée sur la valeur à chaque fois, comment puis-je appeler ma fonction et lui demander d'utiliser la valeur mise à jour?

21
Andrey Koltsov

Si je vous comprends bien, quelque chose comme ceci est la façon dont vous pouvez le faire

$('input').bind('change keydown keyup',function (){
   /// do your thing here.
   //  use $(this).val() instead e.target.value
});

Mise à jour: 03/05/13

Veuillez noter: que vous feriez mieux d'utiliser .on() comme opposé à .bind()

Depuis jQuery 1.7, la méthode .on () est la méthode recommandée pour attacher des gestionnaires d'événements à un document. Pour les versions antérieures, la méthode .bind () est utilisée pour attacher un gestionnaire d'événements directement aux éléments. Les gestionnaires étant attachés aux éléments actuellement sélectionnés dans l'objet jQuery, ces éléments doivent exister au moment où l'appel à .bind () a lieu. Pour une liaison d'événement plus flexible, voir la discussion sur la délégation d'événements dans .on () ou .delegate ().

Pour plus d'informations jQuery Bind

23
Val

Vous pouvez utiliser keyup - vous ne l'appelez donc qu'une fois la touche relâchée:

$("#idofinputfield").keyup(function() {
    youFunction($(this).val());
});
16
Scoobler

Avez-vous essayé 

$('#target').keyup(function(){       
     alert($(this).val());      
});
3
Jishnu A P

si vous devez vous lier à un élément de la hiérarchie, vous pouvez vous abonner à l'événement keyUp dans le gestionnaire keyDown.

$("#container").keydown(function (e) {
   //here you decide whether to handle the key event, and grab the control that sent the event 
   var myInput = e.target;
   $("#container").one('keyup', function() {
      console.log(myInput.val());  
      // do smth here
   });
});
1
Kosau

Vous devez utiliser event.key pour obtenir la valeur d’entrée actuelle avant de l’afficher dans la zone de texte .

Voici le code. 

function validate()
{
  document.getElementById("divOutput").innerHTML = event.key;
  //I am here returning false so that you can see that this value is being entered before the text is input. This is very useful for number validation purposes.
  return false;
}
Enter Number: <input type="text" id="txtInput" onkeydown="return validate()" /><br />
You Entered <div id="divOutput"></div>

0
vibs2006