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 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
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 css : 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
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 Affichage
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
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 : 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
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.
Partager