2010-08-18 6 views
0

J'ai un div qui est défini sur display:inline en utilisant le gestionnaire d'événements onclick() JS. Comment puis-je faire le div revenir à display:none lorsque je clique n'importe où ailleurs sur la page autre que la div maintenant visible?JavaScript perdre focus

J'ai recherché sur Google blur et en réglant le focus à un autre élément mais je ne sais pas comment le faire réellement.

Répondre

0

Vous pouvez créer un div absolu couvrant toute la surface de la fenêtre en lui donnant 100% de largeur et de hauteur, puis lui donner un onclick pour afficher: none votre div. votre div devrait avoir un z-index supérieur à la div absolue

2

Si vous souhaitez utiliser jQuery, il est facile:

$('*').click(function(){ 
    if ($(this).attr('id') !== 'div_id'){ 
    $('#div_id').css('display', 'none'); 
    } 
}); 

Le ci-dessus devient plutôt lent avec tout * sélecteur, donc Je vous recommande d'utiliser jQuery Outside Events plugin.

Exemple:

$('#div_id').bind('clickoutside', function(){ 
    $(this).css('display', 'none'); 
}); 
+0

+1 pour le lien vers le plugin jQuery Outside Events. – elo80ka

+0

Je ne veux pas vraiment utiliser jQuery, mais je ne l'ai pas spécifié, donc vous gagnez. –

+0

@Roboju: Alors j'espère que vous trouverez bientôt une solution dans vanilla javascript :) – Sarfraz

0

l'échantillon js brut peut être trouver here.

0
document.onclick = function(e) { 
    if (!e) var e = window.event; 
    if (e.target.id == 'the_id_of_your_div') { 
    // Do something 
    } else { 
    // Do something else 
    } 
} 
+0

A quoi ressemble le html qui l'utilise? –

+0

Some text
L'événement se déclenchera dès qu'il y aura un clic n'importe où sur la page –

Questions connexes