Forum Clubic

Pb JS et PHP : ajout de ligne automatique

Bonjour

J’ai un petit problème dans la gestion de mon JS pour ajouter des lignes de manière automatisée en fonction des besoins dans un formulaire

voila ce que j ai tenté de faire:

le formulaire:


	echo '<div id="divcompteur"></div>';
		?>
	<div id="divsource"> 
		<tr><td>Modèle:</td><td><input name="designation[<?php echo $y;?>]" type="text" onclick="window.open('choix_article.php?param=designation<?php echo $y;?>','Choisir','width=500,height=250');" value="<?php echo $designation[$y];?>" ></td>
		<td>Prix achat:</td><td><input name="prix_achat[<?php echo $y;?>]" type="text" maxlength="10" size="5" value="" onClick="verifprixachat(designation<?php echo $y;?>.value,<?php echo $y;?>)"></td>
		<?php if($modifier=='1') {?>
		<td>Quantité:</td><td><input name="quantite[<?php echo $y;?>]" type="text" maxlength="200" size="5" value="<?php echo $quantite[$y];?>"></td>
		<td>Coeff:</td><td><input name="coeff[<?php echo $y;?>]" type="text" maxlength="10" size="5" value="<?php echo $coeff[$y];?>"></tr>
		<?php } else {?>
			<td>Quantité:</td><td><input name="quantite[<?php echo $y;?>]" type="text" maxlength="200" size="5" value="0"></td>
			<td>Coeff:</td><td><input name="coeff[<?php echo $y;?>]" type="text" maxlength="10" size="5" value="1"></td>
			<?php }
		if($option[$y]=='1')
			echo '<td>Option:</td><td><input name="option['.$y.']" type="checkbox" value="1" checked></td></tr>';
			else
			echo '<td>Option:</td><td><input name="option['.$y.']" type="checkbox" value="1"></td></tr>';
	?>
	</div>	
	<!-- Bouton permettant la copie de la liste modèle -->
    <button onclick="addSelect()" type="button">Ajouter Liste</button>
    <!-- Zone, vide au début, dans laquelle les nouvelles listes seront ajoutées -->
    <div id="divCible"></div>

J’ai donc instaurer 3 div:
Une qui contiendra le compteur issu du code JS qui vient après (variable i)
Une autre qui contient les lignes a dupliquer (toute la portion des input)
Une dernière qui contient l’endroit ou il doit ajouter le code copié

Maintenant la fonction javascript "addSelect appelée par le bouton:


   <script language="javascript">
      var i=0;
      function addSelect()
      {
        i++;
        // On récupère l'endroit où devra être ajouté la liste
        var divCible = document.getElementById("divCible");
        // On récupère l'endroit où devra être ajouté le compteur
        var divcompteur = document.getElementById("divcompteur");
        // On récupère la liste modèle
        var selModele = document.getElementById("divsource");
        // On la clone dans une nouvelle variable
        var nvxSel = selModele.cloneNode(true);
        // (pour la présentation, on crée un retour à la ligne)
        var br = document.createElement("br");
        // On ajoute tout ça à l'emplacement voulu
	divcompteur.value=i;
	divCible.appendChild(nvxSel);
        divCible.appendChild(br);
      }
    </script>

En gros actuellement quand on appuie sur le bouto, ca ajoute…une ligne blanche (en gros clairement le “br”) et c’est tout.

Qu’en pensez vous?

Je précise que le compteur a comme seule utilité d’incrémenter les tableaux de variable présents dans les champs input.

merci d’avance
Edité le 10/07/2008 à 20:54

après test complémentaire, je peche déjà dans la recupération du contenu de la div source (id nommée divsource)

comment récupérer le contenu d’une div qui contient elle-même plein de données autre que du texte simple?

merci

Tu as essayé la propriété innerHTML ?

Genre :

divCible.innerHTML += document.getElementById("divsource").innerHTML

je viens d’essayer ceci:

divCible.innerHTML += document.getElementById(“divsource”).innerHTML;
alert(divCible.innerHTML);

malheureusement j ai un cadre vide…

Je ne pense pas que ça vienne de là, mais déjà tu n’aurais pas oublié un

dans le divsource ?

non la balise

et
sont en dehors du div

en fait l’objectif de genérer de nouveau groupe d’input (ceux contenu dans le div) et rester dans le même tableau global pour garder une présentation unifiée.

bonsoir,

ca y est j ai compris mon pb:
En effet, apparement le code ne peut pas recuperer le contenu de mon div…car il y a du code autre que du texte simple!(

par exemple ne lui va pas)

es t il possible de contourner cette limitation?
De plus,je ne peux utiliser innerHTML vu que je vais avec cette solution remplacer la div cible, ce qui bloquera automatiquement la ligne suivante a ajouter.

merci
Edité le 10/07/2008 à 23:06

Je crois surtout que ton html n’est pas valide. Un

directement dans un
, c’est pas très réglementaire… (de même qu’un
directement dans un )

j’ai tout changé le code de tte façon. J’ai supprimé les div et les table!

J’ai pu ainsi un peu améliorer le code mais plus des choses marchent meme si tout n’est pas encore parfait.

Dès que j’aurais fini, je publierais le code, pour ceux que ca interessent!