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 :

[DOM] Effacer champ input file


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 49
    Points : 38
    Points
    38
    Par défaut [DOM] Effacer champ input file
    Bonjour,

    J'aimerais savoir si cela est possible d'effacer le champ input de type file. J'explique :

    J'ai un champ : <input type="file"> qui me permet de parcourir mes fichiers.
    Une fois un fichier selectionné, je clique sur un bouton ajouter qui me l'ajoute à une liste mais je voudrais aussi effacer le contenu du champ file.

    Avec value=""; ca marche pas
    J'ai vu qu'il existait un moyen aussi grace :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     var f=document.getElementById('test');
    var p=f.parentNode;
    p.removeChild(f);
    var i=document.createElement('input');
    i.setAttribute('id','test');
    i.setAttribute('type','file');
    p.appendChild(i);
    Mais la non plus ca veut pas
    Donc voila ....

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Essayes avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('idinput').reset();

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Kerod
    Essayes avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('idinput').reset();

    Finalement j'ai reussi à faire fonctionner avec la 2eme metode que j'avais donné.
    C'est a dire tuer le input puis le recréer. C'est pas top mais ca marche.

    Sinon j'ai bien essayé ta methode. Ca aurait ete sympa car c'etait plutot court mais malheureusement sans resultat.

    merci quand meme.

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Autant pour moi j'ai omis un détail, voici ce qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
     
    <body>
    <form id='t'>
    <input type="file"/><input type="button" onclick="document.getElementById('t').reset()"/>
    </form>
    </body>
    </html>

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    Ok c'est pas faux que ca marche comme ca. Mais ca risque de me donner un formulaire imbriqué dans un autre formulaire. Bref, plus court mais tout aussi efficace !

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Tiens j'ai testé et ca fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" id='t'><input type="button" onclick="document.getElementById('t').value=''"/>

  7. #7
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut
    salut =)

    j'ai le même souci, et le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("pj").value = '';
    ne fonctionne pas.
    T'imagines, cela voudrait dire que tu pourrais uploader le fichier que tu veux du poste client, genre un fichier de config, ou autre... ça fait un peu désordre quand même...

    Enfin bref, j'ai toujours pas la solution et ça m'embête un peu de devoir le supprimer et le recréer. Je trouve ça pas très propre...

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Je comprends pas pourquoi ca fonctionne pas surtout que j'ai testé...C'est qu'il y a un autre problème quelque part

  9. #9
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut
    je ne sais pas, mais je viens de retester et ça ne fonctionne toujours pas. Dans un sens c'est presque normal, car comme je le disais avant cela poserait de gros problèmes de sécurité car on pourrait faire uploader le fichier que l'on souhaite... J'ai finalement pris la technique de vince_grenoblois, c'est-à-dire supprimer et recréer l'input avec le DOM.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 46
    Points : 80
    Points
    80
    Par défaut
    J'ai eu la même envie de pouvoir faire un reset sur un input file. Le code fonctionne très bien en apparence :
    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
    <script>
    	<!--
    	function reset_photo(){
    		var f=document.getElementById('photo');
    		var ancien_nom=f.attributes['name'].nodeValue;
    		var p=f.parentNode;
    		p.removeChild(f);
    		var i=document.createElement('input');
    		i.setAttribute('size','37');
    		i.setAttribute('id','photo');
    		i.setAttribute('name',ancien_nom);
    		i.setAttribute('type','file');
    		p.appendChild(i);
    	}
    	-->
    	</script>
    Comme j'avais indexé le nom du champ avec php, je reprend directement l'ancien nom du champ, pour être sûr que ça ne change rien.

    Ma balise input avant le déclenchement de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="photo_5" id="photo" size="37" type="file">
    Et la même après remplacement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="photo_5" id="photo" size="37" type="file">
    Et pourtant, sous FF ou Safari, le script php de traitement du fichier ne reçoit aucun fichier quand le formulaire est envoyé. Tout ça fonctionne sous IE.

    D'où cela peut-il venir?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 46
    Points : 80
    Points
    80
    Par défaut
    Voici la réponse après quelques recherches :
    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
     
    <script>
    <!--
    function reset_photo(){
    	if(navigator.appName=="Microsoft Internet Explorer"){
    		var f=document.getElementById('photo');
    		var ancien_nom=f.attributes['name'].nodeValue;
    		var p=f.parentNode;
    		p.removeChild(f);
    		var i=document.createElement('input');
    		i.setAttribute('size','37');
    		i.setAttribute('id','photo');
    		i.setAttribute('name',ancien_nom);
    		i.setAttribute('type','file');
    		p.appendChild(i);
    	}else{
    		document.getElementById("photo").value = ""; 
    		var input = document.getElementById("photo").cloneNode(true);
    		input.setAttribute("value", "");
    		document.getElementById("container").innerHTML = "";
    		document.getElementById("container").appendChild(input);
    		}
    }
    -->
    </script>
    A condition de mettre l'input entre balises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="input"><input name="photo_<?php echo $i;?>" id="photo" size="37" type="file"/></div>
    Comme ça, tout le monde est content (IE, FF et Safari)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récuperer valeur champ input file
    Par Shandler dans le forum jQuery
    Réponses: 9
    Dernier message: 14/01/2009, 12h11
  2. Probleme champ input file (adresse du fichier)
    Par omar_elid dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 26/08/2008, 17h58
  3. [HTML] Initialisation champ input file
    Par scrouet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 03/03/2008, 17h22
  4. recuperation du champ input file
    Par dieudo dans le forum ASP.NET
    Réponses: 2
    Dernier message: 28/02/2008, 10h30
  5. [DOM] Contenu des "input file" qui s'effacent
    Par cathy9999 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/07/2007, 09h30

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