IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Répétition d'appel de script ajax dans un même formulaire


Sujet :

JavaScript

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut [AJAX] Répétition d'appel de script ajax dans un même formulaire
    Bonjour,

    Bon ben là j'ai un problème qui me dépasse complètement.

    J'ai un formulaire dans lequel, je répète 3 fois la saisie des mêmes informations avec des valeurs différentes bien sûr.

    J'utilise des javascripts ajax, mais du coup, il ne sais plus à quel saint se vouer puisqu'il trouve 3 fois les mêmes id et les mêmes name.

    Ce code se trouve répété 3 fois dans mon script htlm.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <select name="bud_classe" id="bud_classe" onChange="goCategorie(document.getElementById('bud_classe'))" 
    onfocus="this.className='focus';" onblur="this.className='normal';" tabindex="2">
    <option value="-1"></option>
    <option value="3">DEPENSES COURANTES</option>
    <option value="2">DEPENSES FIXES</option>
    <option value="1">RESSOURCES</option>
    </select>
     
    <select name="bud_categorie" id="bud_categorie" 
    onChange="goSsCategorie(document.getElementById('bud_categorie'))"
    onfocus="this.className='focus';" onblur="this.className='normal';" tabindex="3">
    <option value="0"></option>
    <option value="-1">Choisir une classe</option>
    </select>
     
    <select name="bud_ss_categorie" id="bud_ss_categorie" 
    onfocus="this.className='focus';" onblur="this.className='normal';" tabindex="4">
    option value="0"></option>
    <option value="-1">Choisir une catégorie</option>
    </select>
    Je suis sûr que c'est possible, mais je voudrai éviter de renommer les champs.

    Merci d'avance
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Tu fais une boucle pour afficher 3 fois ce code ?

  3. #3
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Oui, c'est pour saisir des lignes de mouvements comptable, je veux pouvoir saisir 3 lignes en même temps.

    Chaque ligne est identifiée analytiquement par classe, catégorie et sous catégorie.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Ben par exemple si c'est un while que tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?
    $i = 0;
    
    while(tacondition){
    
    /**** tes <select> ****/
    
    ?>
    <select name="bud_classe<?=$i?>" id="bud_classe<?=$i?>" onChange="goCategorie(document.getElementById('bud_classe<?=$i?>'))" 
    onfocus="this.className='focus';" onblur="this.className='normal';" tabindex="2">
    ...
    </select>
    
    <select name="bud_categorie<?=$i?>" id="bud_categorie<?=$i?>" 
    onChange="goSsCategorie(document.getElementById('bud_categorie<?=$i?>'))"
    onfocus="this.className='focus';" onblur="this.className='normal';" tabindex="3">
    ...
    </select>
    
    <select name="bud_ss_categorie<?=$i?>" id="bud_ss_categorie<?=$i?>" 
    onfocus="this.className='focus';" onblur="this.className='normal';" tabindex="4">
    ...
    </select>
    
    <?
    $i++;
    }
    ?>
    Comme ça tes <select> n'ont plus le même id et n'évolueront plus en même temps.

    J'espère que j'ai répondu à ta question.

  5. #5
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Oui, j'y ai pensé, j'ai essayé, je suis en smarty donc mon index est différent, mais le principe est le même.

    Dans mon javascript que tu connais, je dois changer ces lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var liste_select = document.getElementById('bud_categorie');
          var tmp = document.createElement('option');
     
          while(document.getElementById('bud_categorie').options.length > 0){
             document.getElementById('bud_categorie').removeChild(document.getElementById('bud_categorie').options[0]);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var liste_select = document.getElementById(param2);
          var tmp = document.createElement('option');
     
          while(document.getElementById(param2).options.length > 0){
             document.getElementById(param2).removeChild(document.getElementById(param2).options[0]);
    Et dans mon formulaire html rajouter un paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <select name="bud_classe<?=$i?>" id="bud_classe<?=$i?>" onChange="goCategorie(document.getElementById('bud_classe<?=$i?>'),document.getElementById('bud_categorie<?=$i?>').id)" 
    onfocus="this.className='focus';" onblur="this.className='normal';" tabindex="2">
    Si c'est bon, c'est que je commence à comprendre et j'en serai très content.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  6. #6
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Non, à prioris tu dois changer ton javascript là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var liste_select = document.getElementById('bud_categorie');
    var tmp = document.createElement('option');
     
    while(document.getElementById('bud_categorie').options.length > 0){
       document.getElementById('bud_categorie').removeChild(document.getElementById('bud_categorie').options[0]);
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var liste_select = document.getElementById('bud_categorie0');
    var tmp = document.createElement('option');
    		
    while(document.getElementById('bud_categorie0').options.length > 0){
       document.getElementById('bud_categorie0').removeChild(document.getElementById('bud_categorie0').options[0]);
    Où le chiffre en rouge correspond à $i dans ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="bud_categorie<?=$i?>" ...

  7. #7
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Je passe mon "$i" en paramètre de toute façon pour pouvoir le récupérer dans le javascript.

    Ce qui donnera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var liste_select = document.getElementById('bud_categorie'param2);
          var tmp = document.createElement('option');
     
          while(document.getElementById('bud_categorie'param2).options.length > 0){
             document.getElementById('bud_categorie'param2).removeChild(document.getElementById('bud_categorie'param2).options[0]);
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  8. #8
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var liste_select = document.getElementById('bud_categorie'+param2);
          var tmp = document.createElement('option');
    		
          while(document.getElementById('bud_categorie'+param2).options.length > 0){
             document.getElementById('bud_categorie'+param2).removeChild(document.getElementById('bud_categorie'+param2).options[0]);

  9. #9
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci bisounoursjos,

    j'ai directement fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var liste_select = document.getElementById(param2);
          var tmp = document.createElement('option');
     
          while(document.getElementById(param2).options.length > 0){
             document.getElementById(param2).removeChild(document.getElementById(param2).options[0]);
    Qui reprend directment sur mon formulaire l'id et le n°

    Merci ça fonctionne très bien.

    J'ai testé avec 3 lignes puis 5 puis 10 ça fonctionne.

    Je vais donc mettre une popup intermédiaire pour demander à l'utilisateur combien de lignes, il veut ajouter.

    Merci
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appeler un script Matlab dans un programme Java
    Par imedoumda dans le forum Général Java
    Réponses: 1
    Dernier message: 07/04/2016, 10h40
  2. Appel de plusieurs diaporamas dans la même page html
    Par lyberty6 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 01/12/2008, 20h09
  3. appel de script bash dans un programme en C
    Par mackla dans le forum Linux
    Réponses: 1
    Dernier message: 26/02/2008, 21h08
  4. Réponses: 2
    Dernier message: 15/02/2008, 17h47
  5. Appeller un script shell dans une page html
    Par Scurz dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 04/05/2007, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo