Rechercher : dans
Par :

Javascript: ajout de champ dans un formulaire

Dernière réponse le 16 mai 2008 à 23:15:38 oura, le 12 mai 2008 à 00:26:29 
 Signaler ce message aux modérateurs

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.

Configuration: Linux
Epiphany 2.20

Meilleures réponses pour « javascript: ajout de champ dans un formulaire » dans :
Formulaires en ligne - Les champs de saisie VoirQuelles données saisir ? Comment dois-je saisir l'information L'organisation des champs de saisie Séparer les champs de saisie L'organisation des champs et des titres La longueur des champs Quelles données saisir ? Sur la plupart des...
Javascript - l'objet Array VoirLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...

1

StresS, le 16 mai 2008 à 16:42:09

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 ;)

Répondre à StresS

2

 oura, le 16 mai 2008 à 23:15:38

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.

Répondre à oura