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

JavaScript Discussion :

Un tout petit problème avec mon menu contextuel


Sujet :

JavaScript

  1. #1
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut Un tout petit problème avec mon menu contextuel
    Bonjour,

    je viens de fabriquer grâce à diverses sources un menu contextuel qui s'affiche sur un clic droit seulement si je suis dans un input.

    Lorsque je sélectionne une valeur de mon menu, mon input se remplit avec la valeur et mon menu disparaît.
    Ca c'est fait.

    Mon souci est désormais de faire disparaitre le menu si je cliques autre part sur la page.
    Mais là je ne vois pas trop comment faire

    Un petit peu de code pour vous donner une idée de la solution implémentée :

    Coté js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    var menuskin = "skin0"; // skin0, or skin1
    var idchoisi = "" ;
    var option = "" ;
     
    function showmenuie5(id) {
    	var rightedge = document.body.clientWidth-event.clientX;
    	var bottomedge = document.body.clientHeight-event.clientY;
    	if (rightedge < ie5menu.offsetWidth)
    	ie5menu.style.left = document.body.scrollLeft + event.clientX - ie5menu.offsetWidth;
    	else
    	ie5menu.style.left = document.body.scrollLeft + event.clientX;
    	if (bottomedge < ie5menu.offsetHeight)
    	ie5menu.style.top = document.body.scrollTop + event.clientY - ie5menu.offsetHeight;
    	else
    	ie5menu.style.top = document.body.scrollTop + event.clientY;
    	ie5menu.style.visibility = "visible";
    	idchoisi = id;
    	return false;
    }
    function hidemenuie5() {
    	ie5menu.style.visibility = "hidden";
    }
     
    function highlightie5() {
    	if (event.srcElement.className == "menuitems") {
    		event.srcElement.style.backgroundColor = "highlight";
    		event.srcElement.style.color = "white";
    }
     
    function lowlightie5() {
    	if (event.srcElement.className == "menuitems") {
    		event.srcElement.style.backgroundColor = "";
    		event.srcElement.style.color = "black";
    		window.status = "";
       }
    }
     
    function remplir(id) {
    	document.getElementById(idchoisi).value = id;
    	hidemenuie5();
    	document.getElementById(idchoisi).focus();
    	idchoisi = "";
    }
    le menu en lui même (dans le body)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id="ie5menu" class="skin0" onblur="alert('test')">
    	<div class="menuitems" id="REU" onclick="remplir(this.id)" onMouseover="highlightie5()" onMouseout="lowlightie5()">REU</div>
    	<div class="menuitems" id="Form" onclick="remplir(this.id)" onMouseover="highlightie5()" onMouseout="lowlightie5()">Form</div>
    </div>
    l'appel du menu dans un input :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT class="InputPlanning" id="plng1.11" name="periode11"  type="text" size="1" oncontextmenu="showmenuie5(this.id); return false;">
    Auriez-vous une idée ou une piste afin que le menu se referme si je ne suis plus dessus ou si je cliques autre part?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  2. #2
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2007
    Messages : 233
    Points : 94
    Points
    94
    Par défaut
    j'ai pas vraiment compris le fonctionnement dans ton menu contextuel..

    Mais peut être que ça pourrai t'aider: http://users.skynet.be/micdub/script03.htm#onmouseover

    Bon courage
    Il faut parfois servir pour mieux dériger..

  3. #3
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Explications :
    la fonction showmenuie5 affiche le menu en le mettant là où on a cliqué
    la fonction hidemenuie5 cache le menu
    la fonction highlightie5 met en surbrillance l'option du menu sur laquelle on est
    la fonction lowlightie5 enlève la surbrillance
    la fonction remplir ajoute la valeur de l'option sélectionnée dans mon input


    En fait, pour cacher le menu si je cliques autre part j'ai mis sur le onclick du body l'appel à la fonction hidemenuie5.

    Je ne sais pas si cela peut interesser que je fasse un source correct sur le sujet pour la FAQ
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2007
    Messages : 233
    Points : 94
    Points
    94
    Par défaut
    pourquoi ne pa mettre le tous dans un div et tester le onmouseover et le onmouseout come ça tu ne sera pa obligé de cliquer ailleurs pour masquer le menu.
    Il faut parfois servir pour mieux dériger..

  5. #5
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Les options de mon menu sont déjà dans un div (celui d'id ie5menu)

    Mais le onmouseout ne cache pas mon menu. C'est ce que j'avais tenté la première fois.
    C'est pour cela que je suis venu poster ici
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

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

Discussions similaires

  1. petit problème avec mon switch
    Par beegees dans le forum C++
    Réponses: 2
    Dernier message: 03/05/2008, 19h52
  2. Réponses: 5
    Dernier message: 04/04/2008, 00h14
  3. [MySQL] Divers petits problèmes avec mon script
    Par fourniey dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 26/12/2007, 16h20
  4. Réponses: 4
    Dernier message: 15/10/2006, 18h05
  5. Problème avec mon menu
    Par jordy16 dans le forum C++Builder
    Réponses: 4
    Dernier message: 24/08/2006, 08h17

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