Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/11/2011, 11h22   #1
Membre à l'essai
 
Inscription : mai 2008
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 83
Points : 21
Points : 21
Par défaut Bouton dans une boucle PHP : Lors de l'appel de la fonction jQuery toutes les valeurs sont mises à jour

Bonjour,

Je viens vers vous car j'ai un problème que je n'arrive pas à résoudre.
En effet, j'ai une boucle PHP (foreach...) dans laquelle je crée une <div> qui elle-même contient deux boutons "+" et "-" ainsi qu'un champ input texte permettant de rentrer une quantité.

Le fonctionnement vous l'aurez deviné est lorsque je clique sur le bouton - la valeur se décrémente et inversement avec le bouton +.
Jusque là rien de très compliqué, mon problème intervient lorsque ma boucle foreach me ramène plusieurs éléments : Si je clique (admettons) sur le bouton "-" du 3è élément retourné, TOUS les éléments vont être modifiés en même temps, alors que je ne veux modifier que le 3ème...

Je vous colle quelques petits morceaux de codes afin d'illustrer mon explication :

Code PHP :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?php
foreach($blabla as $key => $blibli):?>
 
Qté
<div class="spinner">
  <input type="button" id="<?php echo "buttonSpinnerMinus".$key; ?>" class="buttonSpinnerMinus"><img src="images/moins.png" width="18" height="18" alt="Quantité Moins" />
 
  <input name="quantiteEntree" id="<?php echo "quantity".$key; ?>" class="quantity" value="<?php echo $blibli->getAttribut(); ?>" type="text" />
 
  <input type="button" id="<?php echo "buttonSpinnerPlus".$key; ?>" class="buttonSpinnerPlus"><img src="images/plus.png" width="16" height="18" alt="Quantité Plus" />
<?php endofreach; ?>
Code jQuery
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
$(document).ready(function() {
      $(".buttonSpinnerPlus").live('click', function(){
        var multiple = Session.multiple;
        /**
         * Récupération de l'id du bouton
         */
        var lengthIdSpinner = $(this).attr('id').length;
        /**
         * Récupération de l'index dans la boucle PHP
         */
        var indexIdSpinner = $(this).attr('id').substr(lengthIdSpinner-1, lengthIdSpinner);
        var spinnerDiv = $(this).parent(".spinner");
        var input = spinnerDiv.find(".quantity").val();
        /**
         * Récupération de l'id de l'input
         */
        var lengthIdInput = $(this).parent(".spinner").find(".quantity").attr('id').length;
        /**
         * Récupération de l'index de l'input dans la boucle PHP
         */
        var indexIdInput = $(this).parent(".spinner").find(".quantity").attr('id').substr(lengthIdInput-1, lengthIdInput);
 
        if(indexIdSpinner == indexIdInput) {
          inputInt = parseInt($(".quantity").val());
          if(inputInt < multiple) {
            inputInt = multiple;
          } else {
            inputInt = inputInt + multiple;
          }
          $(".quantity").val(inputInt);
        }
      });
La fonction jQuery "Minus" est sensiblement la même en décrémentant au lieu d'incrémenter.

Pourriez-vous m'aider à débugger mon problème ?

Merci d'avance.
Tyra3l est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 11h46   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 789
Points : 35 789
Citation:
TOUS les éléments vont être modifiés en même temps, alors que je ne veux modifier que le 3ème...
Ben oui mais tu ne le précises pas dans le code :
Code :
$(".quantity").val(inputInt);
D'autant plus étonnant que tu le fais avant :
Code :
$(this).parent(".spinner").find(".quantity")
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 12h01   #3
Membre à l'essai
 
Inscription : mai 2008
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 83
Points : 21
Points : 21
Mon dieu des fois je me gifflerai.

Merci encore !
Tyra3l est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h28.


 
 
 
 
Partenaires

Hébergement Web