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 / Cacher une partie d'un formulaire


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 87
    Points
    87
    Par défaut Afficher / Cacher une partie d'un formulaire
    Bonjour,

    Voici l'evenement pour l'affichage d'une partie du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name="nature" onchange="JavaScript:aff_pro(this.form.nature.selectedIndex);">
        <option selected>Choisissez</option>
        <option value="Professionnel">&agrave; titre professionnel</option>
         <option value="Privé">&agrave; titre priv&eacute;</option>
    </select>
    Et voici la fonction javascript correspondante :

    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
    <script type="text/javascript">
    <!--
    function aff_pro(index) {
    	if(index=1) {
    		document.getElementById('tr1').style.visibility='visible';
    		document.getElementById('tr2').style.visibility='visible';
    		document.getElementById('tr3').style.visibility='visible';
    		document.getElementById('tr4').style.visibility='visible';
    		document.getElementById('tr5').style.visibility='visible';
    		document.getElementById('tr6').style.visibility='visible';
    		document.getElementById('tr7').style.visibility='visible';
    		document.getElementById('tr8').style.visibility='visible';
    	}
    }
    //-->
    </script>
    exemple d'un element :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <tr  id=tr4 style="visibility:hidden"> 
                    <td width="186">Adresse de facturation : </td>
                    <td width="180"> 
                        <input type="text" name="adresse_fact">
                     </td>
              </tr>
    ceci marche convenablement, mais je voudrais que lorsque je choisisse l'option 2, les champs initialement rendu visible par la fonction s'affiche à nouveau, et là ce n'ai apparemment pas si simple car ceci ne marche pas :

    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
    function aff_pro(index) {
    	if(index=1) {
    		document.getElementById('tr1').style.visibility='visible';
    		document.getElementById('tr2').style.visibility='visible';
    		document.getElementById('tr3').style.visibility='visible';
    		document.getElementById('tr4').style.visibility='visible';
    		document.getElementById('tr5').style.visibility='visible';
    		document.getElementById('tr6').style.visibility='visible';
    		document.getElementById('tr7').style.visibility='visible';
    		document.getElementById('tr8').style.visibility='visible';
    	}
    	if(index=2) {
    		document.getElementById('tr1').style.visibility='hidden';
    		document.getElementById('tr2').style.visibility='hidden';
    		document.getElementById('tr3').style.visibility='hidden';
    		document.getElementById('tr4').style.visibility='hidden';
    		document.getElementById('tr5').style.visibility='hidden';
    		document.getElementById('tr6').style.visibility='hidden';
    		document.getElementById('tr7').style.visibility='hidden';
    		document.getElementById('tr8').style.visibility='hidden';
    	}	
    }
    Quelqu'un a t-il la solution ?

    Merci

    Damien

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Pour plus de visibilité
    édites ton poste stp

  3. #3
    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
    salut

    Il te manque quelques bases simples pour travailler efficacement avec javascript;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <select name="nature" 
    onchange="JavaScript:aff_pro(this.form.nature.selectedIndex);">
    ceci est étrangement lourd, par exemple; en html/javascript, ça donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select id="nat" name="nature" onchange="aff_pro(this.selectedIndex)">
    si en testant une identité, tu utilises l'opérateur "=", tu risques de tester longtemps...; consulte la doc javascript sur ce même site;

    plutôt que d'accumuler les lignes de codes similaires dans tes scripts (ce qui correspond mal au concept général de programmation!), cherche la solution qui te fera gagner en temps et en clarté: pour afficher ou cacher ces 8 lignes consécutives, place-les dans un tableau distinct et fais varier sa propriété display!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function aff_pro(ind) {
    with(document.getElementById("tableau").style){
    display = (index==1) ? block : none;
    }
    }

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 87
    Points
    87
    Par défaut
    En effet, il me manque les bases, ça va beaucoup mieux avec == !
    Merci pour ta réponse claire et précise.
    Voici mon code maintenant fonctionnel (avec les balises code !) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function aff_pro(index) {
    	var t_id=new Array("tr1","tr2","tr3","tr4","tr5","tr6","tr7","tr8","tr9","tr10");
    	for(var i = 0; i < t_id.length; i++) {
    		with(document.getElementById(t_id[i]).style){
    			visibility = (index==1) ? "visible" : "hidden";
    		} 
    	}
    }
    S'il est encore optimisable, je prend toujours les conseils !

  5. #5
    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
    ah, je vois que tu tiens à agir sur chaque ligne individuellement

    je crois que le mieux serait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function aff_pro(index){ 
        for(var i = 1; i < 11; i++) { 
            document.getElementById("tr"+i).style.display= (index==1) ? 'block' : 'none';
        } 
    }

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 87
    Points
    87
    Par défaut
    jolie optimisation, nickel !

    merci

    Bye

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

Discussions similaires

  1. [AC-2010] Afficher une partie d'un formulaire sur un état
    Par marg0t dans le forum IHM
    Réponses: 26
    Dernier message: 07/08/2013, 14h37
  2. afficher/masquer une partie d'un formulaire jsp
    Par maroosoft dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/01/2009, 13h47
  3. [JQuery] Cacher une partie du formulaire
    Par swissmade dans le forum jQuery
    Réponses: 9
    Dernier message: 11/07/2008, 10h41
  4. Afficher/cacher une partie
    Par ark42 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/07/2006, 13h18
  5. Afficher/Cacher une partie d'une page
    Par frechy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/01/2006, 14h18

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