Bonjour,
Je ne sais pas si je poste mon message dans la bonne section du forum. Veuillez m'en excuser à l'avance, mais c'est la première fois que je poste ici.
Me voilà bien embêté ! :o
Depuis plusieurs jours, je cherche à faire apparaître un bloc au clic sur un onglet (<li> avec tabindex), jusque là, pas trop de soucis. Mes blocs s'affichent et s'effacent tant que je clic sur les onglets. :)
C'est maintenant que cela se corse !! :(
Dès que je clic en dehors de mes onglets, le bloc affiché s'efface à nouveau. Là je comprends encore. Le fait de perdre le focus de l'onglet, normal tout s'efface. :colere2:
Ma demande est la suivante :
Y a-t-il un moyen de garder le focus sur l'onglet actif même si on clic ailleurs sur la page ?
Je suis débutant en JS et je suis sur un projet perso pour gérer mes élèves. :magicien:
Voici mes bouts de codes :
HTML
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 <fieldset id="infosFact"> <legend>Informations de Facturations</legend> <div class="totalFact"> <p>Total Facturation</p> <h3>0,00</h3> </div> <div class="totalSelect"> <p>Total Selection</p> <h3>0,00</h3> </div> <div class="totalNoRegle"> <p>Total "Non Réglé"</p> <h3>0,00</h3> </div> </fieldset> <fieldset id="infosVers"> <legend>Informations de Versements</legend> <div class="totalSelectVers"> <p>Total Sélection</p> <h3>0,00</h3> </div> <div class="CotisFact"> <p>Cotisations Facturées</p> <h3>0,00</h3> </div> <div class="ecartFact"> <p>Ecart Facturation</p> <h3>0,00</h3> </div> <div id="panneau"> <ul id="onglets" class="clearfix"> <li tabindex="1">Informations</li> <li tabindex="2">Liste Inscrits</li> <li id="fact" tabindex="3">Facturations</li> <li id="vers" tabindex="4">Versements</a</li> <li tabindex="5">Tarifications</li> </ul> <ul id="contenus"> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div>
CSS
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111 /* Informations Facturations et Versements */ #infosFact, #infosVers { display: none; } #infosFact, #infosVers { border: 2px ridge lightgray; width: 80.5%; align-items: center; margin-top: 0; } #infosFact, #infosVers, #infosFact legend, #infosVers legend { background-color: lightblue; } #infosFact p, #infosFact h3, #infosVers p, #infosVers h3 { margin: 0; padding: 0; } #infosFact p, #infosVers p { text-align: center; } #infosFact h3, #infosVers h3 { text-align: center; margin: 2% 0 0 0; } .totalFact, .totalSelect, .totalNoRegle, .totalSelectVers, .CotisFact, .ecartFact { width: 40%; height: 38px; } #panneau { margin: 0; padding: 0.15%; filter: drop-shadow(0 0 2px rgba(0, 0, 0, .5)); } #panneau #onglets { margin: 0; padding: 0; } #panneau #onglets li { float: left; height: 20px; line-height: 20px; background: rgba(255, 255, 255, 0.5); text-align: center; padding: 0 8px 0 8px; margin: 0; color: rgba(0, 0, 0, 0.4); list-style: none; font-size: 0.8em; font-weight: bold; cursor: default; } #panneau #onglets li:hover { background-color: #2f67ff; color: rgb(240, 248, 255, 0.4); } #panneau #onglets li.actif { background: whitesmoke; color: black; } #panneau #contenus { margin: 0 0 0 0; padding: 0 0 0 0; height: 41vh; } #panneau #contenus li { /*Je défini les propriétés communes à ts les contenus*/ background: whitesmoke; width: 100%; height: 100%; padding: 10px 0 10px 0; /*et je les masque*/ display: none; } #panneau #contenus li.actif { /* j'affiche uniquement le li de class actif */ display: block; } /***** HACKS CSS *******/ .clearfix:before, .clearfix:after { content: " "; display: table; } .clearfix:after { clear: both; } .clearfix { *zoom: 1; }
JS Onglets
JS AffichageCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 var onglets = document.getElementById("onglets"); var contenus = document.getElementById("contenus"); var liOnglet = onglets.getElementsByTagName("li"); var liContenu = contenus.getElementsByTagName("li"); liOnglet[0].className = "actif"; liContenu[0].className = "actif"; for (var i = 0; i < liOnglet.length; i++){ liOnglet[i].num = i; liOnglet[i].addEventListener("click", function(){ for (var j = 0; j < liOnglet.length; j++){ liOnglet[j].className=""; liContenu[j].className=""; } liOnglet[this.num].className="actif"; liContenu[this.num].className="actif"; }); }
Merci d'avance pour me mettre sur la voie (je ne demande pas une solution toute faite (sauf si un bon samaritain... :-°))Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 /* Afficher Informations de Facturations */ document.getElementById('fact').addEventListener("focus", afficherFact); function afficherFact() { document.getElementById('infosFact').style.display = "flex"; } /* Masquer Informations de Facturations */ document.getElementById('fact').addEventListener("blur", masquerFact); function masquerFact() { document.getElementById('infosFact').style.display = "none"; } /* Afficher Informations de Versements */ document.getElementById('vers').addEventListener("focus", afficherVers); function afficherVers() { document.getElementById('infosVers').style.display = "flex"; } /* Masquer Informations de Versements */ document.getElementById('vers').addEventListener("blur", masquerVers); function masquerVers() { document.getElementById('infosVers').style.display = "none"; }
Vous souhaitant une bonne journée, ou soirée (à prendre en fonction de l'heure de votre lecture) ;).
Michel Diot
Débutant webmaster.
