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 :

Afficher/Masquer élément au chargement dans un formulaire dynamique


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    ...
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 31
    Points
    31
    Par défaut Afficher/Masquer élément au chargement dans un formulaire dynamique
    Bonjour,

    Je me tourne vers vous car je cherche en vain une solution à mon problème...
    J'ai un formulaire généré de cette manière:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    foreach($tab as $key=>$val)
    {							
    	echo '<select name="'.$key.'" onChange="autre(this,\''.$key.'\')">';
    	foreach($val as $cle=>$donnee)
    	{
    		echo '<option value="'.$donnee.'">'.$donnee.'</option>';
    	}
    	echo '</select><input type="text" name="autre_'.$key.'" id="autre_'.$key.'" class="hide"/>';
    }

    En gros on obtient une succession de select qui ont cette forme :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <select name="nom" onChange="autre(this,'nom')">
    	<option value="dupont">Dupont</option>
    	<option value="dubois">Dubois</option>
    	<option value="Autre">Autre</option>
    </select>
    <input type="text" name="autre_nom" id="autre_nom" class="hide"/>
     
    <select name="prenom" onChange="autre(this,'prenom')">
    	<option value="jean">Jean</option>
    	<option value="paul">Paul</option>
    	<option value="Autre">Autre</option>
    </select>
    <input type="text" name="autre_prenom" id="autre_prenom" class="hide"/>
    ...

    Lorsque l'on sélectionne "Autre", le input type text apparait grâce à ma fontion autre()
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function autre(select,nom)
    {
    	if(select.options[select.selectedIndex].value == "Autre")
    	{
    		document.getElementById('autre_'+nom).style.visibility = 'visible';
    	}
    	else
    	{
    		document.getElementById('autre_'+nom).style.visibility = 'hidden';
    	}
    }

    CSS de l'input
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .hide
    {
    	visibility:hidden;
    	width:300px;
    }

    Ça ça fonctionne pas de soucis. Le problème c'est que lorsque l'on a sélectionné "Autre" et que l'on recharge la page (F5) avant d'avoir validé le formulaire et bien le champ input est de nouveau caché => css

    Est-ce qu'il existerait un moyen de contrôler tous les select au chargement de la page pour faire apparaitre les champs "Autre" étant donné que le nombre de select est variable et leur id également (autre_'.$key') ? Ou bien alors une autre solution pour éviter que les champ disparaissent au rechargement de la page ? Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Sauvegarde la visibilité des éléments dans un cookie.
    Je pense que c'est mieux aussi d'utiliser "style.display" à la place de style.visibility.

    A+.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    ...
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    Tout à fait d'accord pour le style.display, j'avais utilisé style.visibility à cause d'un soucis d'alignement des éléments en css. Autrement je vais me renseigner pour le cookie, j'aurais préféré éviter d'utiliser cette méthode. Merci quand même

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Le problème c'est que lorsque l'on a sélectionné "Autre" et que l'on recharge la page (F5) avant d'avoir validé le formulaire et bien le champ input est de nouveau caché => css
    Logiquement, lorsqu'on recharge la page (appuyer sur F5 est rarement fait par hasard), c'est bien qu'on ne veut pas conserver les choix déjà faits, du coup, ce que tu demandes me semble aller à l'encontre des choix de l'utilisateur et donc à éviter...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    ...
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    Merci pour vos réponses, c'est vrai que je me complique un peu la vie
    Et bien alors lorsque la personne fait F5 j'aimerais que les select reviennent à leur valeur par défaut (selected="selected") ce qui n'est pas le cas actuellement... J'ai essayé onload="document.formulaire.reset()" mais sans succès. J'explique de nouveau le soucis :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select name="'.$key.'" onChange="autre(this)">
    	<option value="dupont" selected="selected">Dupont</option>
    	<option value="dubois">Dubois</option>
    	<option value="autre">Autre</option>
    </select>

    Je sélectionne "Autre", un input type text apparait. Je fais F5, l'input type text disparait et le select reste à "Autre"...

    Une idée ?

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Le seul moyen (que je sache) c'est utilisé du cookie pour sauvegarder les valeurs et les récupérer lors du onload du body pour faire une restauration.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    ...
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    Bon et bien j'ai résolu le problème en mettant ceci à la fin de mon code html
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">document.forms.formulaire.reset();</script>
    Le onload=document.forms.formulaire.reset(); dans le body ne marchait pas.

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Et ça restaure les données déjà saisie quand on fait F5 sur tous les navigateurs ça . J'aimerai bien voir ça un jour .

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 139
    Points : 171
    Points
    171
    Par défaut
    Tu es sûr que ce n'est pas un problème de cache ? Il m'arrive souvent de choisir une valeur de mon select, de faire F5 sous Firefox, et de retrouver la page avec la valeur choisie. Je dois faire un ctrl-F5 pour que la valeur par défaut se rétablisse.

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    ...
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    @andry.aime : ben le but est de remettre à zéro donc bon pour le moment sur Firefox, Chrome et Opera ça roule, j'essaye de tester sous IE dès que j'aurais une image disque pour ma machine virtuelle (suis sous Ubuntu).

    @bewidia : Tout à fait mais les utilisateurs n'auront peut être pas le réflexe de faire ctrl+F5 pour recharger leur page

  11. #11
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par titinesaku Voir le message
    @andry.aime : ben le but est de remettre à zéro
    Je ne sais pas si j'ai mal compris le problème initial ou tu t'es mal exprimé, mais bon, l'essentiel c'est que tu as résolue ton problème.

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    ...
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    En fait j'ai pris en compte la remarque de Bovino qui disait que si la personne fait F5 c'est qu'elle ne souhaite pas garder les données entrées dans le formulaire, on affiche les données par défaut => selected="selected"
    Enfin voilà, merci à vous

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

Discussions similaires

  1. Masquer un champ vide dans un formulaire access
    Par anassyto dans le forum IHM
    Réponses: 2
    Dernier message: 25/06/2013, 16h24
  2. Réponses: 12
    Dernier message: 14/04/2008, 10h52
  3. [Dates] Afficher les jours du mois dans un formulaire
    Par Jimmy Monkey dans le forum Langage
    Réponses: 7
    Dernier message: 30/12/2007, 11h27
  4. [TCD/GCD] Afficher/Masquer élément
    Par piro dans le forum Général VBA
    Réponses: 2
    Dernier message: 28/02/2007, 14h21
  5. Afficher ou pas un champs dans un formulaire continu
    Par bozolozo dans le forum Access
    Réponses: 3
    Dernier message: 24/04/2006, 17h48

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