double incrémentation dans une fonction JavaScript
double incrémentation dans une fonction JavaScript - HTML/CSS - Programmation
MarshPosté 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) :
<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°"+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);
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°"+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°"+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>