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

jQuery Discussion :

Popup avec JQuery et scroll intempestif


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Par défaut 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 : 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;
    }
    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
    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.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Etant donné le symptôme, on peut imaginer que la popup est lancée depuis le clic sur un lien dont le href serait "#" et qui n'est pas inhibé (return false sur le onclick).
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Par défaut
    Merci c'est ça !
    Bon, mon code a des bugs par ailleurs, mais au moins ce point est-il débloqué.

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

Discussions similaires

  1. Popup zoom image avec jquery
    Par sibile dans le forum jQuery
    Réponses: 3
    Dernier message: 03/04/2017, 11h39
  2. popup erreur avec jquery
    Par speedylol dans le forum jQuery
    Réponses: 1
    Dernier message: 02/08/2011, 21h34
  3. Login dans un popup avec jQuery/Thickbox
    Par goldor dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/06/2009, 10h19

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