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:
$('.dropdown').hover(function() {
$('.dropdown-menu', this).stop(true, false).slideToggle();
$(this).toggleClass('open');
});
J'espère avoir été clair .
Merci de vos réponses.
Bonjour, je rajouterais la classe open lorsque l'utilisateur clique sur l'<input>
et lorsque qu'il clique sur ton body
tu supprime la classe !
Merci de votre réponse JeremieMeunier, c'est exactement ce que j'essaye de faire mais vu que je suis nul en javascript (je suis au niveau 1 sur 100 lol) je n'arrive pas à le faire !
J'ai fais un truck comme ça mais ça ne marche pas tjs !
Merci de me corriger.
$('.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();
});
});
Le problème avec ton code c'est que tu as un click
dans ton hover
et le JS va prendre en priorité le hover
et du coup dès que tu va quitter le hover
il enlève la classe !
Je ferais plus comme ça en animant en CSS
//JS
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')
})
Voici ma solution qui fonctionne parfaitement (pour les interessés) :
$('.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 de votre aide )