1 votes

Éléments d'entrée JQuery

J'ai besoin de récupérer tous les éléments d'entrée dans un div, puis d'y attacher des gestionnaires d'événements, de sorte que chaque fois que les valeurs changent, un champ caché soit mis à jour. Les éléments enfants dans le div peuvent déjà contenir des gestionnaires d'événements, si c'est le cas, l'attachement doit les enchaîner.

Toute aide est la bienvenue.

2voto

rahul Points 84185
$("#divID :input").change(function(){
    // write your code here
});

où divID est l'identifiant unique de la division. Cela sélectionne tous les éléments input, textarea, select et button à l'intérieur de la div.

Voir Sélecteur d'entrée

Si vous voulez éviter l'élément bouton, vous pouvez utiliser l'opérateur not comme suit

$("#divI :input:not('button')").change(function(){

});

1voto

Dean Harding Points 40164

JQuery gère le chaînage automatiquement, donc ce qui suit devrait fonctionner :

$("div input").change(function() { whatever(); });

1voto

Dominic Barnes Points 13815

Je suis curieux de savoir pourquoi vous devez mettre à jour un champ caché et avoir vos données dupliquées. Mais si vous insistez, voici une "solution unique", bien que vous perdiez un peu de souplesse en procédant ainsi au lieu de joindre manuellement chaque élément.

D'abord, le HTML :

<form id="form">
   <input type="text" id="txtName" />
   <input type="hidden" id="hdnName" />

   <input type="text" id="txtEmail" />
   <input type="hidden" id="hdnEmail" />

   <select id="selGender">
      <option value="male">Male</option>
      <option value="female">Female</option>
   </select>
   <input type="hidden" id="hdnGender" />
</form>

Maintenant, le Javascript :

$(document).ready(function() {
   $("#form").find("input[type='text'], select").change(function() {
      $this = $(this);

      var id = $this.attr("id");
      id = id.split(3, id.length - 1);

      $("#hdn" + id).val($this.val())
   });
});

Pour que cela fonctionne, il faut que chacun de vos champs ait le statut de text et qu'ils respectent également la convention de dénomination que j'ai utilisée ici ( [txt|sel]FieldName , hdnFieldName )

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