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 :

R�initialiser formulaire apr�s retour page pr�c�dente


Sujet :

JavaScript

  1. #1
    Membre � l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par d�faut R�initialiser formulaire apr�s retour page pr�c�dente
    Bonjour,

    J'ai un formulaire avec des cases � cocher qui envoient vers des pages diff�rentes selon la case/langue choisie. Le script fonctionne tr�s bien, lorsque l'internaure choisit la langue anglaise, il se retrouve sur la page en anglais, s'il choisit la langue fran�aise, il se retrouve sur la page en fran�aise, etc.

    Mais petit probl�me : si l'internaute a d'abord choisi le fran�ais, et qu'il revient sur la page initiale avec le bouton "page pr�c�dente" de son navigateur,
    1) le formulaire indique l'option choisie "fran�ais", au lieu du texte "Choisissez la langue". Il peut quand-m�me changer de langue.

    2) Mais il ne peut pas revenir sur la page "fran�ais" (s'il lui prend cette fantaisie) par le formulaire qui ne fonctionne que sur l'�v�nement onchange.

    Je vous joins mon code au cas o� vous pourriez me dire quoi ajouter pour pallier ce petit d�faut :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form name="jump">
    <select name="menu" size="1" onchange="document.location.href=this.value;">
    <option selected value="#">Choisissez une langue...</option>
    <option value="msds/msds_fr.php">Fran&ccedil;ais</option>
    <option value="msds/msds_en.php">Anglais</option>
    <option value="msds/msds_es.php">Espagnol</option>
    <option value="msds/msds_fi.php">Finnois</option>
    <option value="msds/msds_pt.php">Portugais</option>
    <option value="msds/msds_sv.php">Su&eacute;dois</option>
    </select>
    </form>
    Autre question : quelle est l'int�r�t de mettre ce code :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    <select name="menu" size="1" onchange="location=document.jump.menu.options
    [document.jump.menu.selectedIndex].value;" value="GO">
    � la place de celui-ci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <select name="menu" size="1" onchange="document.location.href=this.value;">
    (aucune diff�rence par rapport � mon probl�me pr�c�dent d'ailleurs).

    Merci de vos r�ponses

  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
    Par d�faut
    J'ai fait ce code vite fait en esp�rant que ca t'aidera
    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
    <script type="text/javascript" language="javascript">
    function test()
    {
    document.jump.menu.options[0].selected = true;
    }
    </script>
    <body bgcolor="#000099" onfocus="test()">
            <form name="jump">
    <select name="menu" size="1" onchange="document.location.href=this.value;">
    <option selected value="#">Choisissez une langue...</option>
    <option value="http://www.google.fr">Fran&ccedil;ais</option>
    <option value="msds/msds_en.php">Anglais</option>
    <option value="msds/msds_es.php">Espagnol</option>
    <option value="msds/msds_fi.php">Finnois</option>
    <option value="msds/msds_pt.php">Portugais</option>
    <option value="msds/msds_sv.php">Su&eacute;dois</option>
    </select>
    </form>
    </body>
    il fonctionne lors de retour...Il fonctionne d�s que la focalisation est donn�.
    Comme tu as dit que c'est une page que l'on voit qu'une fois donc il devrait pas avoir de probl�me, non ???

    Pour ta deuxieme question, alors l� aucune id�e moi je trouve plus simple de mettre le this.value et c'est bon

  3. #3
    Membre � l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par d�faut
    Bonjour Kerod,

    Merci pour cet essai de d�pannage. Je n'ai pas vu de diff�rence, malheureusement. Je choisis fran�ais, j'arrive � la page fran�ais. J'utilise la fl�che "pr�c�dente" de IE pour retourner au formulaire, "fran�ais" est toujours s�lectionn� et invalide. C'est bien dans le head qu'il faut rajouter le script? (et modifier aussi la balise body).

    Le cas des gens qui reviennent en arri�re pour ensuite redemander la m�me page est certes rare, donc ce n'est pas bien emb�tant, sauf que c'est mon client qui m'a signal� ce petit bug, et son propre client qui l'avait d�couvert !

    Depuis le temps que les webmestres utilisent des listes d�roulantes pour envoyer sur diverses pages, personne n'a vu/corrig� ce probl�me? Peut-�tre faudrait-il s�parer la liste d�roulante d'un bouton "GO" qui seul commanderait l'ouverture de la page s�lectionn�e. Et je transforme le code comment pour ce faire?

    Merci d'avance

  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
    Par d�faut
    Ben non j'ai test� chez moi et c'est bien dans le body sur l'�v�nement onfocus

  5. #5
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    �tudiant
    Inscrit en
    F�vrier 2006
    Messages
    2 532
    D�tails du profil
    Informations personnelles :
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 532

  6. #6
    Membre �m�rite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    D�tails du profil
    Informations personnelles :
    �ge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par d�faut
    salut
    ya un �venement qui est pris en charge avant que la page ne soit afficher

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script type="text/javascript" language="javascript">
     
    //A noter que loadpage n'a pas de ()
    window.onload = loadpage;
     
    function loadpage(){
    //jai pas testé cette ligne de code par contre, mais bon prennant pour acquis que ca fonctionne
     
     document.jump.menu.options[0].selected = true;
    }
    </script>
    A ben merde, j'ai oubli� que tes objet ne sont pas encore cr�er quand cette m�thode de window est appel�... Dsl pour le post inutile mais j'y ai pens� seulement apr�s....le con!!

    bonne journ�e quand meme

  7. #7
    Membre � l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par d�faut
    Bon, reprenons...

    Mon probl�me vient du fait que la page (et donc le formulaire) n'est pas recharg�e quand l'internaute revient en arri�re.

    Est-ce qu'on pourrait inclure une commande qui remet le formulaire � z�ro quand on est dirig� vers la page de la langue choisie?

    Ou bien qui aurait le javascript + html complet pour avoir � la fois la liste d�roulante et le bouton GO qui active le choix?

    Je ne comprends rien du tout au javascript donc non seulement il me faut le script mais aussi savoir o� l'inclure ...

    Bon, je suis les progr�s de la discussion et merci pour vos interventions.

  8. #8
    Membre �m�rite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    D�tails du profil
    Informations personnelles :
    �ge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par d�faut
    Salut
    bon ce que tu peux faire
    c'est simple c'est du php

    tu te garde un variable de session que tu nommes par exemple
    $_SESSION['pageProvenance'] = "taPage.php";

    Cette variable t'as juste a la valider au d�but de ton code et la changer lorsqu'elle est exacte
    Je m'explique...dison que ta premiere page s'appelle index.php...Si c'est la premiere page qu'on tombe dessus pas de pb, si ca vient d'une autre page qu'on va nommer autrePage.php alors voici:

    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
     
    //Dans index.php
    session_start();
     
    if(isset($_SESSION['pageProvenance']) && $_SESSION['pageProvenance'] == "autrePage.php"){
     
    //si ca entre ici alors tu modifie ta variable et lui donne le nom de ta page
    $_SESSION['pageProvenance'] = "index.php";
     
    ...
    }
    else if(!isset($_SESSION['pageProvenance']) || $_SESSION['pageProvenance'] != "autrePage.php"){
     //tu le redirige vers où tu veux ou encore
    // tu peux réinitialiser tes variable post...car en faisant un back, ca doit demander une confirmation du genre il y a certain élément envoyé, voulez vous recommencer...
    }
    Donc une fois que l'usager a choisi la langue et est rediriger sur cette page...dans cette page tu modifies la variable session...ainsi, quand l'usager va faire un back...il va tomber sur index.php qui va valider la variable de session et va le rediriger car elle s'attend a ce que la page de provenance soit autrePage.php

    C'est une petit astuce pour ne pas faire 2 ajout dans la bd en cas d'un rafraichissment avec f5 aussi

    J'espere t'avoir mis sur une piste

  9. #9
    Membre � l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par d�faut
    Bonjour Ozzmaxx,

    Je n'ai pas tout compris, mais bon, je pense avoir le sh�ma. Si je viens sur la page index.php � partir de la page de la langue, et o� j'aurai d�fini la variable session = autrePage, alors l'internaute est redirig� vers index2.php qui est une copie de index, mais pas encore charg�e donc le formulaire sera OK, c'est �a?

    Pourquoi pas, mais c'est un peu compliqu�. Et, question b�te, la variable de session passe automatiquement d'une page � l'autre? Je sais, je d�bute...
    Et autre question : Il ne faut pas fermer la session quelque part?

    Je trouve que tout cela est bien compliqu�. Il n'y aurait pas un script qui obligerait � recharger la page d�s que l'on y acc�de par bouton retour depuis certains URL particuliers? Si par exemple je d�finis sur chaque page de langue la variable $recharger ="oui" est-ce que sur la page index.php je peux avoir un script qui dit if $recharger="oui" alors recharger la page ?? En m�langeant �ventuellement du PHP et du javascript?

    ou alors en examinant l'URL de provenance par un $_GET ? Un peu sorcier pour moi d�j�, �a... mais c'est en phpant qu'on devient phperon.

    Et o� faudrait-il mettre ce script? Vu que �a ne concerne qu'une page, et que le head HTML vient d'un include commun � toutes les pages.

    Bon en tout cas moi je croyais que mon probl�me serait r�solu en 1/2 ligne ! Le Form_Var.reset(); de FremyCompany m'aurait bien plu, mais �a ne me parle pas du tout. Je le mets o� et comment??

    Bien merci � tous ceux qui daignent voler � mon secours. C'est vraiment stupide ce petit probl�me ! Et si je d�sactivais le bouton retour du navigateur !? C'est faisable, �a? Bon, je commence � fumer du cerveau, je vais dormir un peu, c'est plus s�r.

  10. #10
    Membre �m�rite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    D�tails du profil
    Informations personnelles :
    �ge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par d�faut
    Salut
    bon les variable de session sont des variable qui vont toujours etre accessible tant que ta session ne sera pas d�truite...va te renseigner ladessus elles sont tr�s utiles. En passant ta session est d�truite quand tu ferme le navigateur ou que tu d�truit ta session...

    donc dans ton cas je te r��explique car ca peut etre utile...

    ta premiere page est celle des langues on va l'appeler langue.php
    dans cette PREMIERE page, tu va setter ta variable php si elle n'existe pas bien sur...et comme c'est ta premiere page, elle ne devrait pas exister

    donc:

    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
     
    //avec les sessions tu dois avoir ca en premier
    session_start();
     
    //tu vérifie si elle n'existepas
    if(isset($_session['page'])){
    //c'est la premiere fois qu'on arrive dans cette page de langue
    //excellent on attribut une valeur à la variable
     
    $_session['page'] = "pageLangue.php";
    //...il peut y avoir d'autre chose
    else{
    //donc si ca entre ici, ca veux donc dire que ta variable à déjà été enregistré
    //Ca veut dire que tu es déjà passer par cette page puisque c'est la premiere..donc..ca vient d'une autre page (avec un back)
     
    //tu peux donner des instructions ici
    }
    C'�tait pour la premiere page..celle de la langue
    bon tu disais que tu redirigais apr�s avoir choisis
    je me posais la question...tu gardes comment en m�moire que l'utilisateur a choisi le francais comme langue...oki tu le redirige mais par la suite...tu restes toujours dans la meme page?

  11. #11
    Membre � l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par d�faut
    Salut Ozzmax,

    Merci pour tes pr�cisions sur les sessions, j'ai appris quelque chose.

    Bon, on va reprendre en nommant les pages comme elles s'appellent en r�alit�, ce sera plus clair finalement.

    1. le visiteur arrive sur une page nomm�e documentation.php
    2. Il y a sur cette page un formulaire � liste d�roulante qui permet de choisir la langue.
    3. Quand il choisit la langue, mettons anglais, le javascript du formulaire le redirige automatiquement vers la page de la langue, c'est-�-dire, msds_en.php (dans le r�pertoire msds).
    4. Le visiteur ne trouve pas ce qu'il veut, il utilise la fl�che "pr�c�dente" de son navigateur pour retourner sur la page documentation.php pour choisir une autre langue. (Il peut faire autrement, mais ce visiteur-l� choisit de faire comme �a).
    5. Le formulaire ne s'est pas r�initialis�, il reste s�lectionn� sur "anglais". S'il veut aller sur une autre langue, il la choisit et �a redirige bien. Mais s'il veut retourner sur "anglais" parce qu'aucune autre langue ne lui convient (je sais c'est tordu, mais c'est arriv� au client du client, donc...), il ne peut pas via le formulaire, car la redirection se fait sur un "onchange" et il n'y a pas de changement puisqu'on est d�j� s�lectionn� sur "anglais".
    Donc ce que je voulais faire, c'est obliger le formulaire � se r�initialiser lors de la redirection, ou bien ajouter un bouton "GO" associ� � l'action de redirection plut�t que le onchange. Mais je ne sais faire ni l'un ni l'autre parce que je ne fais pas du tout de javascript.
    J'esp�re que c'est bien clair maintenant, mon histoire ?
    Et si je ne parviens pas � le faire, vu le petit nombre actuel de langues, je peux supprimer le formulaire et remplacer par des liens � cliquer ! Mais j'ai d'autres formulaires du m�me type sur d'autres sites, avec le m�me petit inconv�nient. Donc une parade serait bienvenue.
    Re-merci !

  12. #12
    Membre �m�rite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    D�tails du profil
    Informations personnelles :
    �ge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par d�faut
    salut
    bon oki alors ne nous compliquons pas la vie!
    t'as une liste d�roulante avec un �venement onChange(); qui appel du javascript j'imagine... pour effectuer ton changement de page

    Et bien t'as qu'a rien faire dans le onChange() de la liste d�roulante et mettre un bouton go comme tu dis et dans son �venement onclick tu valides la valeur de la liste d�roulante des langues
    Ce que tu as a faire:
    1- mettre un id � ta liste d�roulante..appelons le "_lstLangue"
    1.1- des values (tu dois l'avoir fait) pour les options de langue
    2- un bouton go de type button
    3- un fonction javascript qui va valider la langue choisie
    4- un nom a ton formulaire pour qu'on puisse changer son action (frmDocumentation)

    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
     
    <script type="text/javascript" language="javascript">
     function redirigeLangue(){
      var langue = document.getElementById("_lstLangue").value;
     
      //la t'a différentes options avec des if ou un switch
      if(langue == '1'){ //francais
       document.frmDocumentation.action = "msds_fr.php";
       document.frmDocumentation.submit(); 
      }
      else if(langue == '2'){ //Anglais
       document.frmDocumentation.action = "msds_en.php";
       document.frmDocumentation.submit();
      }
      else if(//si t'as d'autre langue){
        ...
      }
      else{
       //Ca va rentrer ici s'il n'y a pas de langue choisi donc value = 0
       alert("Vous devez choisir une langue");
      }
     }
    Pour la liste d�roulante
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form name="frmDocumentation" action="" method="post">
     <select name="lstLangue"  id="_lstLangue">
      <option value="0">Choisir une langue</option>
      <option value="1">Francais</option>
      <option value="2">English</option>
     </select>
     
     <input type="button" name="btnOk" value="Go" onClick="javascript:redirigeLangue();">
    </form>
    Et voil�!

  13. #13
    Membre � l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par d�faut
    Merci Ozzmax, d�s que j'ai un peu de temps je m'y replonge et je vous tiens tous au courant.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 13/08/2008, 08h08
  2. R�ponses: 9
    Dernier message: 17/01/2008, 15h33
  3. Formulaire et retour page pr�c�dente
    Par namstou3 dans le forum Langage
    R�ponses: 1
    Dernier message: 14/09/2007, 14h14
  4. Retour page pr�c�dente
    Par Mister Nono dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 4
    Dernier message: 11/07/2006, 22h14
  5. [2.0] Retour page pr�c�dente
    Par davasm dans le forum ASP.NET
    R�ponses: 6
    Dernier message: 20/06/2006, 16h25

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