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 :

Bloquer menu déroulant sur un clic


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 7
    Par défaut Bloquer menu déroulant sur un clic
    Bonjour,
    J'ai un menu déroulant au survol de la souris avec Bootstrap. Dans mon menu déroulant, j'ai un input de recherche. Je voudrais faire en sorte que lorsque l'utilisateur clic sur l'input le menu se bloque et que même si la souris sort du menu il reste affiché. Lorsque l'utilisateur clic ailleurs sur la page, le menu disparaisse.
    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $('.dropdown').hover(function() {
        $('.dropdown-menu', this).stop(true, false).slideToggle();
        $(this).toggleClass('open');
    });
    J'espère avoir été clair .
    Merci de vos réponses.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 7
    Par défaut
    Cette solution ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $('.dropdown').hover(function() {
       $('.dropdown-menu', this).stop(true, false).slideToggle();
          $(this).toggleClass('open');
       $('.inputx').click(function() {
          $(this).focus();
          e.stopImmediatePropagation();
          return false;
       });
       $(document).click(function(){
          $('.dropdown-menu1').slideToggle(); 
       }); 
    });
    et cette solution aussi ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var dropmenu = document.querySelector('div.monmenu')
    var input = dropmenu.querySelector('input')
    var body = body
     
    dropmenu.addEventListener('mouseover', function (e) {
        dropmenu.classList.add('open')
    })
    dropmenu.addEventListener('mouseout', function (e) {
        dropmenu.classList.remove('open')
    })
    input.addEventListener('click', function (e) {
        dropmenu.classList.add('open')
    })

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 522
    Par défaut
    Edit : essaie d'ajouter un id='myInput' a ton input de recherche qui est dans le menu déroulant, puis essaie ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $('.dropdown').hover(function() {
      if (!$('.dropdown-menu').is(':visible')) {//si le menu n'est pas visible
        $('.dropdown-menu').slideDown();//affiche le menu
      }
    });
    $(document).click(function() {//clique n'importe ou sur le document
      if ($('.dropdown-menu').is(':visible') && !$('#myInput').is(':focus')) {//si le menu est visible ET l'input ne contient pas de focus
        $('.dropdown-menu').slideUp();//cache le menu
      }
    });
    remarque : il existe aussi jQuery.mouseenter() et jQuery.mouseleave() au cas ou tu ne veux pas utiliser jQuery.hover().

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 7
    Par défaut
    Bonjour,
    Votre code est très élegant Monsieur Toufik, avec quelques petites modifications ça marche. L'affaire est résolue merci )

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

Discussions similaires

  1. Désactiver le menu windows sur un clic droit onContextMenu
    Par guidav dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/12/2006, 21h17
  2. menu déroulant sur une colonne
    Par champion dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 25/04/2006, 11h14
  3. [CSS] [HTML] Menu déroulant sur X niveau
    Par SylvainB dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 24/02/2006, 16h13
  4. [HTML]Bloquer menu déroulant
    Par dj-julio dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 13/01/2006, 09h51
  5. prb de fonctionnalité d'un menu déroulant sur nestcape
    Par greench dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 31/08/2005, 16h35

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