Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de validation automatique d'un formulaire

Sujet résolu
    13 avril 2009 à 22:02:58

    Bonjour!
    Je me heurte actuellement à un gros problème. Voici ce à quoi j'essaye d'arriver:
    j'ai créé une page avec plusieurs éléments dont un un input de type "file".
    J'aimerai que pour les utilisateurs ayant javascript activé sur leur navigateur (ça je m'en occupe, j'ai masqué les <noscript /> dans les codes que je vous donne pour plus de visibilité), l'insertion d'une adresse d'image dans le champ sus-nommé affiche un aperçu de l'image sélectionnée.
    Cherchant sur Google, je suis parvenu à la conclusion qu'AJAX était impuissant et qu'il fallait que je valide le formulaire par le biais d'une "frame fantôme". (source: Forum alsa créations)
    J'ai donc obtenu le code suivant:
    <form method="POST" name="form" id="form" onsubmit="this.target = 'frame_cible';" enctype="multipart/form-data">
    	<iframe id="frame_cible" name="frame_cible" src="" style="width: 0px; height: 0px; border: 0;"></iframe>
    	<label for="banniere">Bannière 300x76 (*.png):</label><br /><input type="file" id="banniere" onChange="document.getElementById('form').submit();"/><br />
    	<input type="submit"/>
    </form>
    

    Ce qui semble marcher parfaitement. Mais au moment ou j'intègre l'automatisme, je me heurte à une limite du langage... D'après Comment ça marche, je modifie mon code pour ce qui suit:
    <form method="POST" name="form" id="form" onsubmit="this.target = 'frame_cible';" enctype="multipart/form-data">
    	<iframe id="frame_cible" name="frame_cible" src="" style="width: 0px; height: 0px; border: 0;"></iframe>
    	<label for="banniere">Bannière 300x76 (*.png):</label><br /><input type="file" id="banniere" onChange="if(document.form.onsubmit()){document.getElementById('preview_banniere').submit();}"/><br />
    </form>
    


    Mais ça ne marche pas...
    En plus de ça, j'aimerai savoir sur quelle page je récupère mes variables $_FILE!
    Je vous remercie d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter
      14 avril 2009 à 9:21:51

      Essayes de sortir l'iframe du formulaire pour voir...
      • Partager sur Facebook
      • Partager sur Twitter
        14 avril 2009 à 10:17:22

        Pourquoi ajax serait impuissant ?

        • Partager sur Facebook
        • Partager sur Twitter
          14 avril 2009 à 10:41:01

          ... Je sais pas si tu as ragardé, mais dans des script Ajax, tu as responcetext, responseXML mais jamais responceFile ...
          Et le javascript ne peut pas accéder aux fichiers... t'as lu les post sur le forum dont il a donné le lien ?

          Après, si tu penses le contraire, je t'invite à nous donner un code pour nous le prouver...
          • Partager sur Facebook
          • Partager sur Twitter
            14 avril 2009 à 11:18:17

            Citation : xavierm02

            Essayes de sortir l'iframe du formulaire pour voir...


            Réaction un peu étrange...
            Il ne se passe rien quand je change le contenu du input file, et quand je valide le formulaire au bouton, il m'ouvre la même page dans un nouvel onglet.
            • Partager sur Facebook
            • Partager sur Twitter
              14 avril 2009 à 11:28:11

              Et pourquoi tu changes le target dans le onsubmit et tu le mets pas directement ?
              • Partager sur Facebook
              • Partager sur Twitter
                14 avril 2009 à 11:37:06

                Citation : xavierm02


                ... Je sais pas si tu as ragardé, mais dans des script Ajax, tu as responcetext, responseXML mais jamais responceFile ...
                Et le javascript ne peut pas accéder aux fichiers... t'as lu les post sur le forum dont il a donné le lien ?

                Après, si tu penses le contraire, je t'invite à nous donner un code pour nous le prouver...



                N'oublies pas tes cornflakes le matin .. sans quoi ça met de mauvaise humeur o_O .

                La question n'est pas de faire un upload de fichier mais d'afficher une miniature de l'image après l'upload.
                Et ça, ça peut effectivement être fait par ajax.
                • Partager sur Facebook
                • Partager sur Twitter
                  14 avril 2009 à 11:39:24

                  Bah alors je doit être complètement stupide... c'est pas ce que j'ai compris... et c'est toujours pas ce que je comprend...
                  Il parle de input[type=file]
                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 avril 2009 à 11:57:14

                    Je voudrais qu'en restant sur une page, l'image dont l'adresse est indiquée dans le input file soit uploadé dans un dossier temporaire (comme si c'était fait avec AJAX, c'est à dire sans changer de page, ou en n'actualisant que le formulaire contenant l'input file). Cette image, une fois uploadée, s'affiche dans un cadre prévu à cet effet dans la page de départ.
                    Si l'image est confirmée (validation d'un formulaire plus global dans a page de départ), l'image est déplacée dans un autre dossier et je fais ma petite affaire avec les autres données rentrées par l'utilisateur (ça c'est pour vous aider à comprendre, je m'occupe de cette partie là).
                    C'est un peu complexe à expliquer, mais le principe est tout simple :euh:
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 avril 2009 à 12:08:04

                      Et c'est quoi qui marche pas ?
                      Le tout ?
                      Bon allez je t'aide...
                      Par étapes...
                      Regardes ton formulaire...

                      La balise form...

                      Ses attributs...

                      Il peut peut-être en manquer un...

                      Celui qui dit quelle page appeler...

                      L'attribut action triple-buse !
                      Target ne remplace pas action... il dit dans quoi ouvrir l'action (l'url)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 avril 2009 à 12:13:34

                        Je m'en était aperçu mais la page d'alsa créations m'a troublé! Dans leur exemples, je ne vois pas à quoi correspond cette page:
                        action="/demo/upload_create"
                        

                        Du coup je n'ai rien mis. Mais d'après plusieurs essais, le formulaire réagit comme si j'avais mis pour action la page où se trouve le formulaire...
                        Ce qui ne marche pas, c'est que quand j'appuie sur le bouton submit, le formulaire semble s'envoyer à un endroit (je ne sais pas où encore), "rond" de chargement sur la souris et en haut de la page, mais quand je change le contenu du input file, il ne e passe rien!
                        La page indiquée dans l'attribut action serait-elle celle où je récupère ma variable $_FILE?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 avril 2009 à 12:16:01

                          Revoir les liens relatifs...
                          Ca fait référence à la racine du site...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            14 avril 2009 à 12:26:11

                            Toujours est-il que mon problème est de valider le formulaire au changement du input file sans changer de page. Ce code (sans attribut action pour l'instant donc):
                            <form method="POST" name="form" id="form" onsubmit="this.target = 'frame_cible';" enctype="multipart/form-data">
                            	<iframe id="frame_cible" name="frame_cible" src="" style="width: 0px; height: 0px; border: 0;"></iframe>
                            	<label for="banniere">Bannière 300x76 (*.png):</label><br /><input type="file" id="banniere" onChange="document.getElementById('form').submit();"/><br />
                            </form>
                            

                            Marche comme je le voudrais mais recharge la page entièrement! (et si je rentre une page dans l'attribut action, il m'envoie sur celle-ci...)
                            Comment faire donc pour recharger uniquement le formulaire et rester sur la même page?

                            • Partager sur Facebook
                            • Partager sur Twitter
                              14 avril 2009 à 12:39:37

                              Bah mets un attribut target et sors l'iframe de ton formulaire...
                              • Partager sur Facebook
                              • Partager sur Twitter
                                14 avril 2009 à 12:46:26

                                J'ai enfin compris, merci du coup de pouce ^^
                                C'est la première fois que j'utilise une iframe, tellement diabolisée aujourd'hui, et je ne savais pas que l'attribut target existait et encore moins à quoi il servait... Après quelques recherches, ça marche! Encore merci ;)
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Problème de validation automatique d'un formulaire

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown