Javascript: ajout de champ dans un formulaire

Fermé
oura - 12 mai 2008 à 00:26
 oura - 16 mai 2008 à 23:15
Bonjour,

J'ai actuellement un problème dont je n'arrive pas à me dépétrer. Je créé un site sur la première page duquel j'ai un formulaire permettant d'upload des fichiers. Ce formulaire est organisé sous forme de tableau avec en dessous un bouton permettant d'ajouter des lignes contenant des champs input de type file. Mon problème est que les champs ajoutés au formulaire de base grâce à javascript ne sont pas pris en compte par php lorsque le formulaire est validé. Voilà mon formulaire en html :

echo '<form name="form1" method="post" action="' . $_SERVER['PHP_SELF'] . '" enctype="multipart/form-data">';
echo '<tr>';
echo '<td colspan="2" align="center"><fieldset><legend>Selection des modèles (format PDB)</legend>';
echo '<table id="templates" align="center" border="0" width="500">';
echo '<tr>';
echo '<td align="right"><a href="help.php?#pdb">Modèle 1</a></td>';
echo '<td><input type="file" name="pdb[0]"></td>';
echo '</tr>';
echo '<tr>';
echo '<td align="right"><a href="help.php?#pdb">Modèle 2</a></td>';
echo '<td><input type="file" name="pdb[1]"></td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="3" align="center"><input type="button" value="Ajouter un modèle" OnClick="ajoutTemplate(3)"></td>';
echo '</tr>';
echo '</table>';
echo '</td>';
echo '</tr>';


Et enfin ma fonction écrite en javascript pour ajouter des champs :

function ajoutTemplate(idTemplate)
{
var tableau = document.getElementById('templates');
var newRow = tableau.insertRow(tableau.rows.length-1);
var newCell = newRow.insertCell(0);
tableau.rows[(tableau.rows.length-2)].cells[0].align='right';
newCell.innerHTML = '<a href="help.php?#pdb">Modèle '+(idTemplate)+'</a>';
newCell = newRow.insertCell(1);
newCell.innerHTML = '<input type="file" name="pdb['+(idTemplate-1)+']">';
tableau.rows[(tableau.rows.length-1)].cells[0].innerHTML = '<input type="button" value="Ajouter un modèle" OnClick="ajoutTemplate('+(idTemplate+1)+')">';

}

Je remercie d'avance ceux qui viendront à ma rescousse.

1 réponse

a la place d innerhtml utilise style.visibility="hidden" (de base) et "visible" kan c cliqué de cette maniere il n apparaitra que quan il y ora ce clic et sera pris en compte dans le formulaire si ta besoin de plus d info n hesite pas ;)
0
Merci d'avoir répondu.

J'ai adopté ta méthode, et effectivement cette fois ça marche.

Cependant je ne comprends toujours pas pourquoi les champs ajoutés avec javascript n'étaient pas pris en compte dans l'envoi du formulaire.

Enfin le principal est d'avoir trouvé une solution équivalente.
0