double incrémentation dans une fonction JavaScript

double incrémentation dans une fonction JavaScript - HTML/CSS - Programmation

Marsh Posté le 20-03-2012 à 19:49:17    

Bonsoir,
Je me trouve devant un problème.
J'ai un formulaire qui me permet d'ajouter des auteurs grâce à un lien. Lorsque je clique sur ce lien ("Ajouter un auteur" ), 3 champs s'ouvrent : Nom de l'auteur, Prénom de l'auteur, et Laboratoire.
Le problème étant qu'un auteur peut faire parti de plusieurs laboratoires. Il faut donc que pour le laboratoire j'ai là aussi un lien ("Ajouter un labo" ). Si je me fais mal comprendre je vais faire rapidement un schéma pour illustrer mon explication :
Auteur n°1 : Nom1 Prénom1 Labo1
Labo2
Auteur n°2 : Nom2 Prénom2 Labo1
Auteur n°3 : Nom1 Prénom1 Labo1
Labo2
Labo3

De plus, je devrais stocker ces valeurs dans ma base de données.
Voici mon code pour le moment, qui ne fait pas ce qu'il faut bien sur, surtout au niveau de l'incrémentation (il ne fait pas la différence entre le numéro de l'auteur et le numéro du labo) :
 
Code : PHP
 
<div id="auteur">
        <label for="auteur_1">Auteur principal</label>
        <input name="nom_auteur_1" value="<?php echo $_SESSION['nom_auteur']; ?>"><input name="prenom_auteur_1" value="<?php echo $_SESSION['prenom_auteur']; ?>"><input name="nom_labo_1" type="text" placeholder="Nom du laboratoire"><span id="add_labo"><a href="javascript:addLabo(2)">+labo</a></span><br/>
    </div>
    <span id="add_auteur"><a href="javascript:addAuteur(2);">Ajouter un auteur</a></span><br/><br/>
 
 
Code : JavaScript
 
<script>
function addAuteur(a) {
        if (a<=10) {   //le nombre d'auteur supplémentaire est bridé à 10
            document.getElementById('add_auteur').innerHTML = '<a href="javascript:addAuteur('+(a+1)+');">Ajouter un auteur</a>';
            var label = document.createElement("label" );
            label.setAttribute("for", "auteur" );
            label.innerHTML = "Auteur n&deg;"+a;
 
            var input = document.createElement("input" );
            input.setAttribute("name", "nom_auteur_"+a);
            input.setAttribute("type", "text" );
            input.setAttribute("placeholder", "Nom de l'auteur" );
            document.getElementById('auteur').appendChild(label);
            document.getElementById('auteur').appendChild(input);
 
            var input = document.createElement("input" );
            input.setAttribute("name", "prenom_auteur_"+a);
            input.setAttribute("type", "text" );
            input.setAttribute("placeholder", "Prénom de l'auteur" );
            document.getElementById('auteur').appendChild(label);
            document.getElementById('auteur').appendChild(input);
 
            document.getElementById('add_labo').innerHTML = '<a href="javascript:addLabo('+(a+1)+');">+labo</a>';
            var input = document.createElement("input" );
            input.setAttribute("name", "nom_labo_"+a);
            input.setAttribute("type", "text" );
            input.setAttribute("placeholder", "Nom du laboratoire" );
            document.getElementById('auteur').appendChild(label);
            document.getElementById('auteur').appendChild(input);
 
            document.getElementById('auteur').appendChild(document.createElement("br" ));
        }
    }
</script>
 
<script>
function addLabo(l) {
        if (l<=10) {   //le nombre de laboratoire supplémentaire est bridé à 10
            document.getElementById('add_labo').innerHTML = '<a href="javascript:addLabo('+(l+1)+');">+labo</a>';
            var label = document.createElement("label" );
            label.setAttribute("for", "auteur" );
            label.innerHTML = "Laboratoire n&deg;"+l;
            var input = document.createElement("input" );
            input.setAttribute("name", "nom_labo_"+l);
            input.setAttribute("type", "text" );
            input.setAttribute("placeholder", "Nom du laboratoire" );
            document.getElementById('auteur').appendChild(label);
            document.getElementById('auteur').appendChild(input);
            document.getElementById('auteur').appendChild(document.createElement("br" ));
        }
    }
</script>

Reply

Marsh Posté le 20-03-2012 à 19:49:17   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed