Bloquer un menu déroulant au survol (bootstrap) sur input focus

Ce topic a été résolu
kraster

kraster Le 27 novembre 2016 à 20:30 (Édité le 25 janvier 2019 à 17:52)

Bonjour,
J'ai un menu déroulant au survol avec Bootstrap. Dans mon menu déroulant, j'ai 2 input username et mot de passe. Je voudrais faire en sorte que lorsque l'utilisateur clic sur l'une des inputs le menu se bloque et que même si la souris sort de ce dernier il reste affiché. Lorsque l'utilisateur clic ailleurs sur la page, le menu remonte normalement.
Mon code:
$('.dropdown').hover(function(){
   $('.dropdown-menu', this).stop(true, false).slideToggle();   
   $(this).toggleClass('open');
});
Ces deux solutions ne marchent pas:
$('.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();
   }); 
}); 
var dropmenu = document.querySelector('div.monmenu')
var input = dropmenu.querySelector('input')
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')
})
J'espère avoir été clair .
Merci de vos réponses.
TheOldNoob

TheOldNoob Le 27 novembre 2016 à 22:34

Salut l'ami,

Il faut remplacer le hover(au passage de la souris) par un clic

Pour ma part, j'utilise se scipt pour faire apparaitre ou disparaitre une div.

    jQuery(document).ready(function() {
            jQuery('.condition').hide();
                jQuery('.clickMe').click(function() {
                    jQuery(this).siblings('.condition').slideToggle(400);
                return false;
            });
        });
A toi d'adapté mes class au tiennes pour que ça fonctionne.
kraster

kraster Le 28 novembre 2016 à 01:36 (Édité le 28 novembre 2016 à 01:38)

Salut ,
Merci de votre réponse TheOldNoob, mon menu déroulant marche très bien avec ce code:
$('.dropdown').hover(function(){
   $('.dropdown-menu', this).stop(true, false).slideToggle();
   $(this).toggleClass('open');
});
Au survol le menu descent (apparaît) et en deplaçant la souris hors element ce dernier remonte (dispparaît), mais le problème c'est que je veux bloquer le menu ouvert si l'une des zones de text est séléctionné meme en déplaçant la souris hors ce dernier.
Je veux faire un effet semblable à celui sur cette page: http://www.monshowroom.com 
En haut à droite, il y a "mon compte", au passage du pointeur le menu descent et remonte automatiquement en déplaçant la souris hors div, mais une fois la zone de text "adresse email" ou "mot de passe" est séléctionnée, le menu reste bloqué ouvert jusqu'au clic quelque part sur le body. Merci d'avance ) 
TheOldNoob

TheOldNoob Le 28 novembre 2016 à 08:21

Merci, j'ai parfaitement compris ton problème.

Je t'es donné la solution juste au dessus. Je donne jamais les solutions sans te laisser chercher un peu. Sinon tu apprendra jamais 😀
kraster

kraster Le 29 novembre 2016 à 23:00 (Édité le 29 novembre 2016 à 23:01)

Merci, j'essaie d'adapter le code, je vous informerai plus tard du resultat 😉
kraster

kraster Le 1 décembre 2016 à 01:10

Salut TheOldNoob,
Voici ma solution qui fonctionne parfaitement:
$('.dropdown').hover(function() {
   $('.dropdown-menu', this).stop().slideToggle().delay();
   $(this).toggleClass('open');
   if ($('.dropdown-user').is(':visible') && $('.input').is(':focus')) {
      $('.dropdown-user').stop();
   }
   $(document).click(function() {
      $('.dropdown-user').slideUp();
   });
});   
et merci infiniment de votre aide )
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte