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 :

Image preview javascript


Sujet :

JavaScript

  1. #1
    Membre très actif Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce intéressant?
    Inscrit en
    Juin 2009
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Est-ce intéressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Par défaut Image preview javascript
    Bonjour à tous,

    Je viens de créer un formulaire de saisie simple en php/html qui permet de saisir les coordonnées d'une personne.
    Pour se faire, j'utilise une classe PHP qui est généré avec la génération du formulaire et qui complète les valeurs des inputs si j'ai un id et des infos correspondantes, sinon, c'est un blanc.

    Jusque la, tout va bien. J'ai voulu rajouter un moyen de transférer un avatar. Cela fonctionne également si je passe par un champ <input type=file>

    Une fois le formulaire OK, je passe à la partie plus compliquée pour moi, rendre la page sexy. Et la, besoin du JS. En effet, pour la partie avatar, je veux cacher le champ input moche et avoir un cadre avec une img qui se changera en fonction de l'image sélectionnée dans mon input.
    J'ai donc trouvé sur le net le moyen de le faire.

    Voici le
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div class="col-md-12 col-sm-12 col-xs-12 form-group has-feedback text-center">
       <img src="<?php echo $monObjet->getValeur('avatar'); ?>" id='output' alt="Avatar" height="120" width="120">
       <input type=hidden name=avatar value='<?php echo $monObjet->getValeur('avatar'); ?>'>
    </div>
    <div id=image></div>
    <div class="col-md-12 col-sm-12 col-xs-12 form-group has-feedback text-center">
       <p><input type=file name="file_avatar" id="file_avatar" class="form-control" accept="image/png, image/jpeg" onchange="previewImage(event);">
       <button type=submit class="btn" onclick="document.getElementById('file_avatar').click();" >Modifier</button></p>
    </div>

    Voici le code JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function previewImage(file) {
        var input = file.target;	
        var reader = new FileReader();
        reader.readAsDataURL(input.files[0]);
        reader.onload = function(){
          var dataURL = reader.result;
          var output = document.getElementById('output');
          output.src = dataURL;
       };
       reader.readAsDataURL(input.files[0]);
    }
    Lorsque je crée un nouveau formulaire, cela fonctionne à merveille. J'étais même fier de moi!!
    Par contre, quand je prends un fiche déjà enregistré, si je clique sur le bouton JS, j'ai bien l'explorateur qui s'ouvre, mais quand je sélectionne le fichier, rien ne se passe.

    J'ai affiché le input file pour voir le comportement, et dans le second cas, même après sélection du fichier, le chemin ne s'affiche pas, alors que oui lors de la création. Je ne comprends pas la différence entre le deux et je reste bloqué dessus car ça m'agace.

    Est-ce que quelqu'un aurait une idée?

    En vous remerciant.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 205
    Par défaut
    Bonjour,
    pourquoi as tu deux fois reader.readAsDataURL(input.files[0]); ?

    Supprime au moins le premier;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function previewImage(file) {
        var input = file.target;	
        var reader = new FileReader();
    //    reader.readAsDataURL(input.files[0]);  /* A SUPPRIMER */
        reader.onload = function(){
          var dataURL = reader.result;
          var output = document.getElementById('output');
          output.src = dataURL;
       };
       reader.readAsDataURL(input.files[0]);
    }

  3. #3
    Membre très actif Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce intéressant?
    Inscrit en
    Juin 2009
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Est-ce intéressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Par défaut
    Merci pour ta réponse. Le doublon surement sur à ma bétise!

    Plus sérieusement, je viens de le supprimer mais cela ne change rien. Par contre, le fait de bosser sur mon raspberry change le symptôme. En effet, sur ma VM au bureau, vu la puissance, je ne vois rien, mais avec mon raspberry, beaucoup plus lent, je vois désormais l'image s'afficher, mais au bout de quelques secondes, l'affichage se rafraîchit et l'image disparaît.

    J'ai donc regardé pour les autres champs et en effet, quand je modifie un input text standard, quand je charge mon image, ce champ se réinitialise aussi...

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 205
    Par défaut
    Si ton élément
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button type=submit class="btn" onclick="document.getElementById('file_avatar').click();" >Modifier</button></p>
    est contenu dans un élément <form> alors ta page est soumise donc rechargée.

  5. #5
    Membre très actif Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce intéressant?
    Inscrit en
    Juin 2009
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Est-ce intéressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Par défaut
    Exact, mon bouton fait parti de mon <form>.
    Je viens de tester et t'es trop fort!! Merci

    Du coup, comment je fais pour mettre mon bouton dans mon formulaire? Je suppose que je ne peux fermer mon </form> et le rouvrir après mon bouton. Existe-t-il une solution?

    Sinon, il faut que je réorganise tout mon formulaire..

  6. #6
    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 659
    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 659
    Billets dans le blog
    1
    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 !

  7. #7
    Membre très actif Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce intéressant?
    Inscrit en
    Juin 2009
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Est-ce intéressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Par défaut
    Super!! Le input à la place du button fonctionne nickel

    Par contre, deux questions du coup:
    - La différence entre le input et le button? Tant que je valide pas par un input/submit pour un form, pas d'action sur la page. Alors que si j'ai un button, alors, action sur la page automatiquement? C'est bien ça?
    - Du coup, en y réfléchissant cette nuit, est-ce que si j'avais fait un preventdefault sur l'action de mon bouton et enchainé le script JS derrière, cela aurait fonctionné?

    En tout cas, merci à vous, je vais pouvoir passer à autre chose

  8. #8
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Tout ce qui est de type sumbit, que ce soit un bouton ou un input a pour role de soumettre le form lors du click ...
    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 !

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

Discussions similaires

  1. Agrandissement d'image en javascript
    Par bellzigor dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/01/2007, 14h50
  2. [images src javascript]
    Par lucimast dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 16/08/2006, 16h19
  3. generation de fenetre&image par javascript
    Par cortex007 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/04/2006, 08h51
  4. images avec javascript
    Par URVOY dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/01/2006, 10h12
  5. Pb acces a une image en JavaScript
    Par NitroBear dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/08/2005, 08h08

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