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 :

Retour arrière (back) + reset des formulaires


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 58
    Points : 52
    Points
    52
    Par défaut Retour arrière (back) + reset des formulaires
    Bonjour,

    J'ai quelques soucis pour écrire une fonction javascript. Celle ci doit pouvoir effectuer un retour en arrière d'une ou plusieurs pages, et de remettre à 0 (reset) tous les formulaires cette page.

    Ma fonction ressemble pour le moment à cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function home(number) {
    	window.history.go(-number);
    	for (i=0;i<document.forms.length;i++) {
    		document.forms[i].reset();
    	}
    }
    Problème:
    Je récupère bien la page précédente, mais le reset ne s'effectue pas sur cette page. J'ai l'impression que le reset se fait sur la page d'où j'appelle la fonction et non pas sur la page de destination.

    Est-il possible de contourner le problème ?
    Merci.

    --
    Bicnic.

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    commande le reset à partir de la page archivée en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="mon_form.reset()">
    ps: reset est une méthode qui ne peut être appliquée à un champ particulier: elle remettra à jour tout le formulaire.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Avec cette méthode, à chaque fois que je vais charger la page, il va me faire un reset de la page. Il y a des cas où je ne dois pas faire de reset...

    Il faudrait que je puisse le faire à partir de ma fonction javascript, ce qui m'éviterai d'ajouter d'autres instructions javascript dans toutes les pages vers lesquelle je veux faire mon reset "à distance".

    --
    Bicnic.

  4. #4
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    mets une variable globale sur la page que tu initilaise à 0 et passe un param qui modifie cette variable globale ?

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Ce n'est pas possible de le faire proprement, sans rajouter une variable globale à toutes les pages suceptibles d'être initialisées ?

    --
    Bicnic.

  6. #6
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Garde en tête que de faire précédent signifie:
    - Stoper la page actuelle
    - Charger une nouvelle page

    Et non pas l'inverse, donc ce n'est pas vraiment possible de "passer" pleins de trucs, sauf en POST et en GET. Une page ne peux pas interagir directement sur une autre (sauf dans le cas de popup), le GET et le POST, bien que contraignant deviennent les seules facons de faire (mis à part les variables coté serveur et les cookies)

    J'espère que ca t'aidera à mieux comprendre le fond de la problématique et la raison de ces méthode qui te sembles radicales.

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Je ne charge pas vraiment la page avec la fonction précédent étant donné qu'il n'y a pas d'accès serveur. Je réaffiche la page qui est mis en cache par le navigateur.

    C'est pourquoi, du fait que cette page soit en cache, je pense (j'espère) qu'il est possible d'interagir sur cette page en cache, et notament lui faire un reset().

    En fait comment je vois les choses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function home(number) { 
       window.history.go(-number);
       var doc = window.history.getDocument(-number) // Comment faire cela ??
       for (i=0;i<doc.forms.length;i++) { 
          doc.forms[i].reset(); 
       } 
    }
    L'idée serait d'accéder au document qui est mis en cache et de lui appliquer la méthode reset().

    --
    Bicnic.

  8. #8
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Quand tu vide ta cache et/ou ton historique, tu peux toujours faire précédent non ?

    Si la page précédente était celle d'un autre site, disons une banque, tu pense que ca serait bien de pouvoir changer des informations dans un formulaire ?

    (Je sais que je reviend souvent avec mes soucis de sécurité mais bon, c'est plus fort que moi)

  9. #9
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    un truc bien tordu ...

    tu mets ouvres un popup ...
    et tu lui mets son location = history(-number)
    tu recupères l'url de la popup
    tu fermes la popup
    et tu fais un self.loaction.href = urlrecupérée+"?"+new Date()

    à tester ...

  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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    arf en fait il n'est pas possible de recuperer le string d'un element de history ...

  11. #11
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Quand tu vide ta cache et/ou ton historique, tu peux toujours faire précédent non ?
    Exact, mais ce dont je suis sûr, c'est que lorsque je fais précédent, il n'y a pas d'accès serveur. Donc la page est bien en cache quelque part sur le poste client.

    Si la page précédente était celle d'un autre site, disons une banque, tu pense que ca serait bien de pouvoir changer des informations dans un formulaire ?
    C'est sûr, mais ce n'est pas trop le problème (c'est pour une banque en plus....). D'autant plus que c'est pour un intranet. Il est impossible d'avoir une page externe.

    --
    Bicnic.

  12. #12
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    le problème majeur est que tu ne peux pas avec l'historique récupérer le string de l'url donc tu n'auras toujours accès qu'a la page en cache .. sans possibilité de rafraichissement ni d'intervention sur le code...

  13. #13
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    C'est mon idée justement: récupérer la page en cache et de faire un reset sur cette page. Je ne veux pas recharger la page à partir du serveur. Je n'ai donc pas besoin de l'url.

    Mais comment faire ? Je n'ai toujours pas trouvé le moyen de le faire.

    --
    Bicnic.

  14. #14
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    ben ce n'est tout simplement pas possible sans mettre de code dans la page en question ...

  15. #15
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    J'ai eu un problème similaire récemment. Le rafraîchissement de la page sur retour-arrière fonctionnait bien sous Firefox et Opera, mais pas sous IE.

    La seule solution "légère" que j'ai trouvée consiste... à s'affranchir du retour arrière. J'ai donc initialisé un timer avec une fonction de rafraîchissement de la page qui tourne toutes les 100 millisecondes. Ca marche bien, quel que soit le navigateur. Evidemment, c'est une solution ad hoc qui n'est pas forcément portable dans tous les contextes...

    NB : par "légère", j'entends quelque chose qui ne me force pas à monter dans mon code une usine de spaghettis. Si on parle en termes de nombre total de cycles utilisés, évidemment, c'est autre chose...

  16. #16
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    En fait Herode le problème ici est de pouvoir appeler une page de l'historique ... et de la rafraichir ...
    et comme on ne peut pas récupérer le string de l'url ...

  17. #17
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    En effet, en relisant le fil, je vois que les spécifications suivantes :
    Citation Envoyé par Bicnic
    Avec cette méthode, à chaque fois que je vais charger la page, il va me faire un reset de la page. Il y a des cas où je ne dois pas faire de reset...
    et ...
    Citation Envoyé par SpaceFrog
    ben ce n'est tout simplement pas possible sans mettre de code dans la page en question ...
    invalident ma suggestion. J'ai parlé trop vite

  18. #18
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Non non Herod toutes les idées sont bonnes à prendre ...
    Elle peuvent mettre sur une piste...
    mais bon là c'est un cas desespéré

  19. #19
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Ce n'est pas fraiment un rafraichissement, mais un reset du formulaire. C'est pourquoi je n'ai pas besoin de l'url, mais je voudrais pouvoir faire un "document.form.reset()", mais je n'arrive pas à accéder à l'objet "document" via l'historique.

    --
    Bicnic.

  20. #20
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Citation Envoyé par SpaceFrog
    mais bon là c'est un cas desespéré
    Il va falloir ajouter un tag [Insoluble]...

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/12/2008, 07h19
  2. Réponses: 38
    Dernier message: 22/07/2005, 08h30
  3. Empêcher le retour á la ligne entre des balises <Hx> e
    Par thomas_chamas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 29/11/2004, 16h39
  4. Réponses: 3
    Dernier message: 15/09/2004, 15h01
  5. [jsp]controles des formulaires servlet ou javascript ?
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 05/07/2004, 14h46

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