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 :

input type="file"


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Par défaut input type="file"
    Bonjour,
    je développe une application web sous ASP.NET 2, je souhaite que l'utilisateur puisse allez chercher des photos entre autres présentes sur son disque. J'ai donc rajouter un champ input (type="file") pour récupérer le fichier, je l'upload ensuite, jusqu'ici tout allait bien.

    Cependant, je souhaite pouvoir changer le texte du bouton "Parcourir" car l'application est multilingue, j'ai donc trouver la solution suivante sur developpez.com dans la FAQ:

    Pour changer le texte d'un bouton de type file, on est obligé de "ruser" car il n'y a pas d'autres moyens.
    Voici le script :
    <script type="text/javascript">
    function getfile(){
    document.getElementById('hiddenfile').click();
    document.getElementById('selectedfile').value=document.getElementById('hiddenfile').value
    }
    </script>

    Et le corps de votre page:
    <body>
    <input type="file" id="hiddenfile" style="display:none" />
    <input type="text" id="selectedfile" />
    <input type="button" value="Select a file" onclick="getfile()" />
    </body>

    En fait, ce que l'on aperçoit sur la page ressemble à un champ de type File, mais en réalité, il s'agit d'un bouton et d'un champ de type texte. Ainsi, grâce à la fonction getfile(), on simule le clic sur le champ File que l'on a caché...

    Cette solution marche trés bien sur IE mais ne marche pas sous FireFox car la fonction click (appelée dans document.getelementbyId(monId).click()) n'est pas implémentée.

    Quelqu'un aurait-il une solution qui marche sous IE et Firefox (ce serait déjà pas mal avec ces deux browsers).

    Merci d'avance pour vos réponses,
    Jul

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 233
    Par défaut
    salut jul54
    A ce que je sache c'est que getElementById n'est pas implémenté sous MOZILLA, donc la solution idéale pour que ton script marche sur MOZILLA c'est de créer une fonction qui permettra d'implémenter ce genre de variable et l'intégrer à ton script.

    Voilà une piste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://mozilla.tlk.fr/doc03.php

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Par défaut
    Salut namstou3,
    merci pour ta réponse rapide mais je pense que getElementById fonctionne sous mozilla (au moins firefox 2) car j'utilise FireDebug pour debugger mon code javascript et si je mets un espion sur getElementById, j'obtiens bien mon élément en question.
    Nos sites étant pour des clients et non pour tout le monde, on peut leur imposer d'installer des versions récentes de IE et firefox (mais ils doivent pouvoir choisir entre les deux).

    Ton lien est quand même trés intéressant et me sera surement utile par la suite

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    La solution est là :
    http://www.quirksmode.org/dom/inputfile.html

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    pas besoin d'aller aussi loin... las solution a déja été donnée sur developpez, une petite recherche s'impose
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    La faq fournit le même lien.

  7. #7
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Par défaut
    J'avais pourtant fait une recherche infructueuse... J'ai pas du choisir les bons mots pour la recherche, quand à la faq je n'y ait trouvée que ce que j'ai affiché et qui ne fonctionne pas sous firefox, je vais essayer d'ouvrir les yeux aujourd'hui. Merci pour le lien et pour vos réponses, je regarde ça avant de mettre le post à résolu.

    Merci à tous

  8. #8
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Par défaut
    Pour le lien laisser par jeca, il finit en concluant que Mozilla n'a pas implémenté la fonction click et que la solution indiquée ne marche pas sous mozilla, tout comme la solution de la faq que j'avais repris. Donc mon problème reste le même.
    Merci à vous tous quand même, ayant déjà perdu ma journée d'hier sur ce sujet je vais passer à autre chose et j'essaierai de réinventer la roue plus tard, si je trouve une solution simple, je la communiquerai à developpez.com

    Bonne journée à vous tous.

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    J'utilise personnellement avec succès cette solution sur IE6, Firefox et Opéra.
    La feuille de style étant celle indiquée dans le lien, voici mon code html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div class="fileinputs">
      <input type="file" size="60" name="fichier" class="file" onchange="this.form.fauxfichier.value = this.value;" />
      <div class="fakefile">
        <input type="text" size="60" name="fauxfichier" value="" />
        <input type="button" class="bouton" value="Rechercher" />
      </div>
    </div>

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    de mémoire il faut passer par un input type hidden ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Pas besoin de se casser la tête, le texte du bouton parcourir est dans la langue du navigateur.

  12. #12
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Par défaut
    Merci pour vos réponses,

    le texte du bouton parcourir est dans la langue du navigateur.
    Je m'en doute bien, mais je souhaite qu'il soit dans la langue du site, même si ce ne sera pas souvent le cas, on peut imaginer par exemple un utilisateur voulant l'application en anglais alors qu'il est en france, il aura alors tous les textes en anglais sauf ce bouton.

    de mémoire il faut passer par un input type hidden ...
    C'est la solution proposer par la faq (cf mon premier post), seulement, on simule ensuite un click sur le bouton qui ne fonctionne pas sous firefox.

    La solution de jeca me parait relativement similaire...

  13. #13
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Pas besoin de se casser la tête, le texte du bouton parcourir est dans la langue du navigateur.
    Oui, mais il est impossible de changer l'aspect du bouton. Donc s'il y a plusieurs boutons dans un formulaire, je n'ai trouvé que cette solution pour obtenir un aspect homogène. Et puis, ça fonctionne avec très peu de code, alors, pourquoi se priver ?

  14. #14
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    J'ai mis ça dans les contributions sinon :

    http://developpez.net/forums/showpos...4&postcount=12

  15. #15
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Par défaut
    en effet cette solution marche pour IE et firefox, c'est parfait pour moi.

    Merci à vous tous pour votre aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2004, 15h44

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