Bonjour,
J'ai créé un popup avec des div et JQuery, à l'image de l'exemple sur le lien suivant :
http://yensdesign.com/2008/09/how-to...-using-jquery/
Seulement, j'ai un comportement qui ne me plait pas. Lorsque l'on appuie sur Echappement, la div disparait bien, mais le scroll remonte en haut de page, ce qui est particulièrement énervant lorsqu'on a une longue liste (j'ai bien de la pagination, le nombre de lignes à afficher est modifiable).
A quoi faut-il faire attention pour avoir un comportement plus logique, à savoir que la popup disparait mais la page "en dessous" reste au même endroit ?
Faut-il positionner les div à un endroit particulier ? quoi d'autre ?
Pour info, mon css pour les deux div concernées :
Ainsi que le Javascript utile :
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 .popupBack { display:none; position:fixed; _position:absolute; /* hack for internet explorer 6*/ width:100%; height:100%; top:0; left:0; background-color: #555; background-color: rgba(0,0,0, 0.5); -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; IE 8 z-index:150; } .popupFront { display:none; position:fixed; _position:absolute; /* hack pour internet 6 */ z-index:200; width: 350px; margin:auto; border-style: solid; border-width:5px; background-color: #FFF; background-color:rgba(255,255,255,.9); border-color:#FFB040; border-color:rgba(255,176,64, .9); padding: 20px; cursor:move; font-size: 1em; }
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
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 <script type="text/javascript"> function showConfirm() { $("#idPopFront").show();//css({"display": "block"}); $("#idPopBack").show();//css({"display": "block"}); } function hideConfirm(id) { $("#idPopBack").hide();//css({"display": "none"}); $("#idPopFront").hide();//css({"display": "none"}); $("#id").removeAttr("value"); $("#action_lien").removeAttr("value"); } //centering popup function centerPopup(){ //request data for centering var windowWidth = document.documentElement.clientWidth; var windowHeight = document.documentElement.clientHeight; var popupHeight = $("#idPopFront").height(); var popupWidth = $("#idPopFront").width(); //centering $("#idPopFront").css({ "position": "absolute", "top": windowHeight/2-popupHeight/2, "left": windowWidth/2-popupWidth/2 }); //only need force for IE6 $("#idPopFront").css({ "height": windowHeight }); } //CONTROLLING EVENTS IN jQuery $(document).ready(function(){ //CLOSING POPUP //Click the x event! $("#annulerConfirm").click(function(){ hideConfirm(); }); //Press Escape event! $(document).keypress(function(e){ if(e.keyCode==27){ hideConfirm(); } }); $("#validerConfirm").click(function() { $("#formSupp").submit(); }) $(".suppIndex").click(function(f) { var id = $(this).attr("id").substr(5); var texte = $(this).attr("value"); $("#messageSupprimer").html("Êtes-vous certain de vouloir supprimer " + " " + texte + " ?"); $("#id").removeAttr("value"); $("#id").attr("value", id); $("#action_lien").removeAttr("value"); $("#action_lien").attr("value", "confirmerSupprimer"); centerPopup(); showConfirm(); }); }); </script>
Merci d'avance pour vos avis éclairés.
Partager