IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[formulaire] réinitialiser un champ de type file


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut [formulaire] réinitialiser un champ de type file
    Bonjour,

    J'ai un formulaire dans lequel j'utilise la balise input de type file pour permettre à l'utilisateur d'ajouter des fichiers.
    Tout fonctionne bien, mais je dois améliorer la chose en récupérant le chemin des fichiers sélectionnés et en fansant l'upload une seule fois lorsque l'utilisateur valide le formulaire ou en différé.

    Je ne sais pas comment réinitialiser mon champ apès avoir récupéré le chemin du fichier sélectionné pour que l'upload ne soit pas fait lorsque je recharge la page pour mettre à jour le formulaire.

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    pour des raisons evidentes de sécurité tu ne peux pas accéder au value d'un input file.

    si tu veux le reinitialiser, soit tu passes par le reset() du form, soit tu en recréé un avec un createElement et apres tu fais un replaceChild
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Je viens d'éssayer avec le reset() comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.formulaire.fichier.reset();
    Mais ça ne semble pas fonctionner, c'est comme si tout se figeait arrivé à cette ligne.

    Pourriez vous me donner quelques précisions concernant l'autre méthode s'il vous plaît ? Je dois créer une fonction de reset c'est bien ça? Et c'est quel élément qu'il faut remplacer?

    merci.

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    c est sur le formulaire qu on appel reset, pas sur le champ.
    Mais ca va mettre tout le form a zéro.
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Je m'en suis douté un peu après avoir essayé sur le champ. Mais le problème en faisant un reset sur le formulaire c'est qu'il y a des valeurs dans les autres champs qu'il fo garder.

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben donc deuxiemem solution, recréé un input file et remplacer l autre.

    Mais tu perdras le chemin vers le fichier.
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    C'est justement pour garder que le chemin que je cherche une solution alors si je le perds, ça m'aide pas.

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    tu ne pourras pas car le value d un file n'est pas accessible !

    je comprend pas pourquoi tu veux le mettre de coté
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    C'est simple, si je laisse tel quel, l'upload du fichier se fait immédiatement après l'avoir sélectionné car j'effectue des controle et je remets à jour l'affichage. Et je ne veux pas faire l'upload à ce moment mais qu'après la sélection de tout les fichiers.
    Y a peut-être un autre méthode pour ça mais j'espère que je dois pas modifier tout mon code pour ça.

  10. #10
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    pourquoi ne pas faire de controle cote client a ce moment la ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Pour le contôle c'est encore faisable mais c'est du php qui est utilisé pour l'affichage et donc il faut obligatoirement passer par le serveur à ce moment là pour raffraichir.

  12. #12
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    pourquoi veut tu rafraichir ?
    penches toi sur la verification de formulaire en javascript.
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Pour les contrôles, c'est bon ça va pouvoir se faire côté client en javascript, à ce niveau là il n'y a plus de problème.
    Mais il faut bien rafraichir la liste des fichiers sélectionnés apès chaque ajout.

  14. #14
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    pourquoi faire ?

    Que veux tu faire exactement ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Comme je l'ai déjà dit, l'utilisateur a besoin de joindre des fichiers à mon formulaire. Si jamais il se trompe, Il doit aussi pouvoir supprimer un fichier qu'il a joint, donc la liste des fichiers joints est toujours affichée et mise à jour après chaque ajout. Tout ça c'est fait en php et jusqu'à présent ça faisait parfaitement l'affaire.

    Vient maintenant s'ajouter une contrainte supplémentaire : l'utilisateur ne doit pas avoir à attendre entre l'ajout de chaque fichier, d'où le besoin de récupérer uniquement le chemin des fichiers et de faire l'upload à la fin. De plus cela permet de ne pas uploader un fichier qui sera peut-être supprimer après.

    Voilà tout.

    Je viens de trouver un script qui permet de faire ça en javascript mais le problème c'est que ça ne s'intègre pas dans mon code.

  16. #16
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <html>
    	<head>
    		<title>files</title>
    		<script type='text/javascript'>
    			var cmpt = 0;
    			function add(){
    				inp = document.createElement("input");
    				inp.type = "file";
    				inp.name = "lenom[]";
    				lediv = document.createElement("div");
    				lediv.id = "fichier"+cmpt;
    				check = document.createElement("input");
    				check.type = "checkbox";
    				check.name = cmpt;
    				check.onclick = function(){
    					elt = document.getElementById("fichier"+this.name);
    					elt.parentNode.removeChild(elt);
    				}
    				lab = document.createElement("label");
    				lab.appendChild(document.createTextNode("Enlever"));
    				lediv.appendChild(inp);
    				lediv.appendChild(check);
    				lediv.appendChild(lab);
    				document.getElementById("fichiers").appendChild(lediv);
    				cmpt++;
    			}
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset id="fichiers">
    				<legend>Fichiers</legend>
    				<input type='button' onclick='add()' value='Ajouter un fichier' />
    			</fieldset>
    		</form>
    	</body>
    </html>
    Utilises un truc dans le genre alors
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    C'est une solution. L'autre script que j'ai trouvé reviens un peu près au même. Mais ( il y a toujours un mais ) ça me fait modifier pas mal de code pour le rendre compatible.

    Je vais qd même partir là dessus au cas où il n'y aurait pas d'autre solution tout en cherchant autre chose.

    Quelques idées que j'ai eu mais je sais pas si c'est faisable:
    - Peut etre que je pourrai supprimer mon input de type file au lieu de le réinitialiser après en avoir récupérer la valeur?
    - Sinon, Est-il possible de dupliquer le formulaire sans ce champs?

  18. #18
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    le truc qu il faut que tu comprennes, c est que meme si tu recupères la valeur de ton champ file, tu ne pourras pas en recréer un et lui affecter cette valeur, c est impossible pour des raisons de sécurité.

    Sinon, il suffirais de faire un formulaire avec un champ file masqué par css pour se servir sur les disques durs des visiteurs .....

    Donc pas possible.
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Bon bah je crois que ça va être long et chiant!
    Je me lance pour voir si ça passe bien.

    En tout cas merci de ton aide.

Discussions similaires

  1. Réponses: 16
    Dernier message: 29/05/2016, 19h45
  2. verification d'un champ de type file d'un formulaire
    Par figatelliSTI dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 28/03/2008, 15h18
  3. [Conception] problème avec firefox sur les champs input type="file"
    Par maverick56 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 11/05/2007, 10h57
  4. Ajout dynamique de champs de type file dans un formulaire !
    Par stitch dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/11/2005, 11h18
  5. Formulaire, champs de type file, value
    Par Space Cowboy dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2005, 08h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo