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
13
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
13
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