252 votes

Comment puis-je me lier à l'événement change d'une textarea dans jQuery?

Je veux capturer si des changements sont survenus à <textarea> . Vous aimez taper des caractères (suppression, retour arrière) ou cliquer et coller ou couper avec la souris. Existe-t-il un événement jQuery pouvant déclencher pour tous ces événements?

J'ai essayé le changement d'événement, mais il ne déclenche le rappel qu'après la tabulation du composant.

Utilisation : Je veux activer un bouton si un <textarea> contient du texte.

366voto

Blaster Points 5633

Essayez ceci en fait:

 $('#textareaID').bind('input propertychange', function() {

      $("#yourBtnID").hide();

      if(this.value.length){
        $("#yourBtnID").show();
      }
});
 

DEMO

DEMO2

Cela fonctionne pour toutes les modifications que vous apportez, en tapant, en coupant, en collant.

EDIT Ajout de demo2 pour les nouvelles modifications de code

160voto

SNag Points 1342

bind est obsolète. Utilisez on :

 $("#textarea").on('change keyup paste', function() {
    // your code here
});
 

Remarque: le code ci-dessus sera déclenché plusieurs fois, une fois pour chaque type de déclencheur correspondant. Pour gérer cela, faites quelque chose comme ça:

 var oldVal = "";
$("#textarea").on("change keyup paste", function() {
    var currentVal = $(this).val();
    if(currentVal == oldVal) {
        return; //check to prevent multiple simultaneous triggers
    }

    oldVal = currentVal;
    //action to be performed on textarea changed
    alert("changed!");
});
 

jsFiddle Demo

97voto

Steel Brain Points 161

Vous voudrez peut-être essayer ceci (testé sur jQuery 2+):

 var button = $("#buttonId");
$("#textareaID").on('keyup',function(e){
    if(e.target.value === ''){
        // Textarea has no value
        button.hide();
    } else {
        // Textarea has a value
        button.show();
    }
});
 

2voto

stay_hungry Points 1034

essaye ça ...

 $("#txtAreaID").bind("keyup", function(event, ui) {                          

              // Write your code here       
 });
 

1voto

eeadev Points 465

.delegate est le seul à travailler avec jQuery JavaScript Library v2.1.1

  $(document).delegate('#textareaID','change', function() {
          console.log("change!");
    });
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X