J'ai trois zones de texte sur une page et chacune a un ID Class différent et situé dans un div différent. J'essaie de cibler tous les <textarea> sur la page et d'exécuter une fonction qui dosomething() si un utilisateur tape toujours dans la zone de texte. Le problème est qu'il ne fonctionne que sur la zone de texte #first et le reste est simplement ignoré. Voici le code que j'utilise. Merci!

$('#first, #second, .third').keyup(function(){
 if ($('#first, #second, .third').val()){
     alert("User is typing");
 }})
0
Milind Pandharkame 14 avril 2018 à 01:14

3 réponses

Meilleure réponse

Vous pouvez simplement cibler les éléments en spécifiant le nom de la balise dans votre sélecteur:

$('textarea').on('keyup', function(e) {
  console.log('typing')
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <textarea></textarea>
</div>
<div>
  <textarea></textarea>
</div>
<div>
  <textarea></textarea>
</div>
2
Scott Marcus 13 avril 2018 à 22:22

$.val

Obtenez la valeur actuelle du premier élément de l'ensemble des éléments correspondants.

Votre chèque ne voit que si le premier élément de votre sélection a une valeur. Vous voulez probablement faire:

$('#first, #second, .third').keyup(function(){
    if ($(this).val()) {
        alert("User is typing");
    }
})
1
dave 13 avril 2018 à 22:21

Essaye ça:

$('#first, #second, .third').forEach(function(txtarea){
 $(txtarea).keyup(function(){
    if ($(this).val()){
       alert("User is typing on THIS textarea");
    }
 })
})

Je ne sais pas pourquoi, mais j'ai également eu quelques problèmes avec la zone de texte. Pour moi, certains événements ne sont pas déclenchés sur la zone de texte. Dans ce code, j'ai fait une boucle pour chaque zone de texte et ser l'auditeur de touches. Javascript a beaucoup à faire. :)

0
Alisson Rubim 13 avril 2018 à 22:26