Forum Programmation.web Ajouter dynamiquement des éléments à un formulaire

Posté par  .
Étiquettes : aucune
0
18
mai
2005
Salut tout le monde,

Je fais un formulaire html qui a pour but d'uploader des images sur le serveur. http://localhost/~manuel/photo/ajouterchamp.html(...)
En gros je fais un div dans le formulaire et puis j'ajoute les inputs avec ceci:
document.getElementById('monformdiv').innerHTML=
document.getElementById('monformdiv').innerHTML
+"[input type='file' id='photo"+indice+"' name='photo"+indice+"'][br]";
Le problème est qu'à chaque ajout il reset les éléments précédemment ajoutés.

Alors j'ai fait une boucle dans la fonction d'ajout où je recopie les valeurs des inputs dans un tableau avant l'ajout puis je les recopie à nouveau dans les inputs après l'ajout.

Bref j'en viens à mon problème: ça marche avec des inputs de type texte mais pas avec des fichiers (j'imagine que c'est pour des raisons de sécurité).

Quelle est la solution?
  • # Avec la bonne adresse ça ira mieux

    Posté par  . Évalué à 1.

  • # Il n'y en a pas

    Posté par  . Évalué à 2.

    Comme tu le supposes très justement, pour raisons de sécurité, on ne peut pas manipuler (et surtout pas en écriture) la valeur des input type file dans les browsers récents.

    Tu peux par contre essayer une autre approche, où au lieu de créer des champs, tu en masquerais/démasquerais au besoin via CSS...
  • # Evite innerHTML

    Posté par  . Évalué à 1.

    Si tu veux garder les valeurs précédemment rentrées, il faut utiliser les objets node et non pas innerHTML. C'est un peu moins bien supporté par les navigateurs (ca doit quand même marcher sur tous les navigateurs "récents", même IE 5.5), mais c'est beaucoup plus propre et puissant.

    Mot clés : document.createElement, node.appendChild.

    Une bonne référence : http://fr.selfhtml.org/javascript/objets/index.htm(...) .
    • [^] # Re: Evite innerHTML

      Posté par  . Évalué à 1.

      Ça marche parfaitement, et merci pour la référence.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.