Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2011, 15h11   #1
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
Par défaut clicker pour fermer une div

Salut,

Voila, j'ai simplifié au max ma page pour vous la montrer:
http://boxfly.free.fr/test/login.html

Quand on clique sur --- Connexion -- cela affiche une div contenant des identifiants de connexion.
Pour la fermer il suffit de re-cliquer sur Connexion. J'aimerai qu'un clique n'importe ou sur la page (sauf dans cette div) me ferme cette div.
Je ne vois pas comment faire, quelqu'un aurait une idée ?

Merci,
Vincent.
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 15h15   #2
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 686
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 686
Points : 5 756
Points : 5 756
Bonjour,

Vous pouvez jouer avec le onclick du <body>.
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 15h25   #3
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
Citation:
Envoyé par vermine Voir le message
Bonjour,

Vous pouvez jouer avec le onclick du <body>.
Le onClick du <body> fermer la div même si la souris est dans la div du menu d'authentification, or elle ne doit pas se fermer avec un click dans cette div...
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 15h36   #4
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 686
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 686
Points : 5 756
Points : 5 756
Par défaut Oups

Oui, pardon. Vous devez gérer la propagation avec stopPropagation ou preventDefault mais j'avoue que je ne sais plus si c'est crossbrowser.
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 16h14   #5
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 772
Points : 4 772
Bonjour,
la fonction associée au click sur le BODY doit tester qui à reçu l'événement, si c'est la DIV on ne fait rien sinon si elle est affichée on la masque.
NoSmoking est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 16h35   #6
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
Citation:
Envoyé par NoSmoking Voir le message
Bonjour,
la fonction associée au click sur le BODY doit tester qui à reçu l'événement, si c'est la DIV on ne fait rien sinon si elle est affichée on la masque.
Comment on peut savoir qui recoit l'évènement onClick ? parce que stopPropagation, ca a l'air bien compliqué...
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 18h19   #7
Candidat au titre de Membre du Club
 
Homme Alex
Webmaster
Inscription : juillet 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Alex
Âge : 22
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : juillet 2011
Messages : 10
Points : 11
Points : 11
Salut,

Déjà tu te simplifierais vraiment la tâche en utilisant la librairie jquery.
Cela te permettra de tout condenser et de simplifier à mort ton code.

2 conseils aussi :
Évite les tableaux quand tu peux (là sur un formulaire, tu peux je pense).
Mets tes styles dans une CSS , même si c'est juste en début de page. Regroupes les.

Ensuite pour ton histoire de click, toujours en jQuery tu peux utiliser la fonction :not (qui équivaut à un except "blabla")

En gros tu peux rendre ton clique avec un truc du genre :
Code :
1
2
3
4
5
6
7
8
$('#menuTD_1').click(function() {
  $('#tadiv').show;
  $("#tadiv").addClass("opened");
});
 
$('body :not(.opened)').click(function() {
  $('#tadiv').hide;
});
Arekk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 18h33   #8
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 772
Points : 4 772
il faut utiliser target ou srcElement, un petit exemple au naturel
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
</head>
<body>
<p>petit texte</p>
<a href="page.html">petit lien</a>
<script type="text/javascript">
document.onclick = function(e){
  e = e || event;
  var oElem = e.target || e.srcElement;
  alert( oElem.tagName);
  if( oElem.tagName == 'A'){
    return false;
  }
}
</script>
</body>
</html>
NoSmoking est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h16.


 
 
 
 
Partenaires

Hébergement Web