Pb ajout dynamique input dans formulaire

tophe03 Messages postés 327 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 14 avril 2010 - 22 févr. 2009 à 15:04
tophe03 Messages postés 327 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 14 avril 2010 - 23 févr. 2009 à 23:21
Bonjour,

J'ai fait un formulaire d'envoi de mail avec fichiers attachés. Les fichiers attachés sont ajouté dynamiquement dans le formulaire. On peut également en supprimer. Mon problème est que lorsqu'un fichier est supprimé, la fonction d'ajout ne fonctionne plus ensuite.

code javascript :

i = 1;
textLink = new Array();
supprimer = new Array();

function addFile(file)
{
j = i-1;
fichier_existe = 0;

if (j > 0)
{
for (x = 0; x < j; x++)
{
if (document.getElementById("Fichier" + x).value == file)
{
alert('Ce fichier est déjà ajouté');
fichier_existe = 1;
document.getElementById("Fichier" + j).value = "";
break;
};
};
};

if (fichier_existe == 0)
{
document.getElementById("Fichier" + j).style.display = "none";

d2 = document.getElementById("attTr2");
d1 = document.getElementById("attTr1");
iTd2 = document.createElement("td");
iTd1 = document.createElement("td");
iTd2.setAttribute("valign","top");
iTd1.setAttribute("valign","top");
iTd1.setAttribute("align","center");
iTd1.setAttribute("width", 120);
textLink[j] = document.getElementById("Fichier" + j).value.substr(document.getElementById("Fichier" + j).value.lastIndexOf("\") + 1);
supprimer[j] = "Voulez-vous supprimer le fichier " + textLink[j] + " ?";

// For Internet Explorer
try {
newAttach = document.createElement("");
newLink = document.createElement("");
newLink.appendChild(document.createTextNode(textLink[j]));

};
// For other browsers
catch (e) {
newAttach = document.createElement("input");
newAttach.setAttribute("type","file");
newAttach.setAttribute("id","Fichier" + i);
newAttach.setAttribute("name","Fichier[]");
newAttach.setAttribute("onChange","Javascript: addFile(this.value);");
newLink = document.createElement("a");
newLink.setAttribute("id","lien" + j);
newLink.appendChild(document.createTextNode(textLink[j]));
newLink.setAttribute("href","javascript:void(0)");
newLink.setAttribute("title","Supprimer " + textLink[j]);
newLink.setAttribute("onClick", "Javascript: if(confirm(supprimer[" + j + "])) {delFile(" + j + ");}");
};

iTd1.appendChild(newLink);
d1.appendChild(iTd1);
iTd2.appendChild(newAttach);
d2.insertBefore(iTd2,d2.childNodes[0]);

i++;
};
}

function delFile(num)
{
child2 = document.getElementById("Fichier" + num).parentNode;
d2 = document.getElementById("attTr2");
d2.removeChild(child2);

child1 = document.getElementById("lien" + num).parentNode;
d1 = document.getElementById("attTr1");
d1.removeChild(child1);

i--;
}

et la partie html concernant l'ajout de fichiers :

echo ' <TBODY>'."\n";
echo ' <TR valign="top" align="left" height=40 id="attTr1">'."\n";
echo ' <TD width=120 align="left" valign="top"><label for="Fichier">Fichiers attachés :</label></TD>'."\n";
echo ' </TR>'."\n";
echo ' <TR valign="top" height=40 id="attTr2">'."\n";
echo ' <TD width=1 align=left valign="top">'."\n";
echo ' '."\n";
echo ' </TD>'."\n";
echo ' </TR>'."\n";
echo ' </TBODY>'."\n";
echo ' </TABLE>'."\n";

Je ne vois pas trop pourquoi ce qu'il peut se passer, si quelqu'un a une idée...
Merci d'avance

4 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
22 févr. 2009 à 15:54
bonjour,
un exemple ici qui fonctionne</gras>
Cordialement[mon Site][M'écrire]Bul
0
tophe03 Messages postés 327 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 14 avril 2010
22 févr. 2009 à 18:41
Bonjour,

Et merci pour ta réponse mais c'est pas ce recherche en fait.

Voici ce que j'ai fait : lorsqu'on choisi un fichier, le nom de fichier apparait sous forme de lien. Le input disparait et un nouveau apparait. Lorsqu'on clique sur le lien créé, on supprime le fichier. Jusque là, tout fonctionne. Mais lorsqu"un fichier a été supprimé, la fonction d'ajout ne fonctionne plus.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
23 févr. 2009 à 10:32
__ c'est exactement ce que fais le script dans le lien
     et quand on supprime un fichier, ça continue à marcher
__ tu utilises setAttribute, et ça ne fonctionne pas
     de la même manière avec tous les navigateurs
0
tophe03 Messages postés 327 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 14 avril 2010
23 févr. 2009 à 23:21
Salut

J'ai résolu le problème. C'était juste un problème d'indices qui se posait après suppression de fichiers.
Concernant le setAttribute, je sais que ca ne fonctionne pas avec les évènements sur IE.
Merci pour tes réponses
0
Rejoignez-nous