Popup avec JQuery et scroll intempestif
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 :
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
| .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;
} |
Ainsi que le Javascript utile :
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
| <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.