Pb ajout dynamique input dans formulaire

Signaler
Messages postés
327
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
14 avril 2010
-
Messages postés
327
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
14 avril 2010
-
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

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
bonjour,
un exemple ici qui fonctionne</gras>
Cordialement[mon Site][M'écrire]Bul
Messages postés
327
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
14 avril 2010

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.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
__ 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
Messages postés
327
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
14 avril 2010

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