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 :

Événement onclick non détecté avec onmouseover


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut Événement onclick non détecté avec onmouseover
    Bonjour.

    Soit un bouton "Abonné".

    L'événement onclick de ce bouton lance une fonction Ajax pour supprimer l'abonnement.

    Voici le code du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Le membre connecté suit déjà le votant
    		$html .=		'<div id="btn_following_'.$id_votant.'">';
    		$html .=			'<img id="img_btn_following_'.$id_votant.'"
    								src="images/profil/btn_following_'.$la_langue.'.png"
    								onclick="unfollow('.$id_membre_connecte.', '.$id_votant.', \''.$la_langue.'\');" 					
    							/>';
    Ainsi, la fonction Ajax se lance quand on clique sur le bouton, la suppression en BDD se fait et le bouton est changé en "Suivre".

    Si j'ajoute les événements onmouseover et onmouseout pour changer le bouton "Abonné" en "Se désabonner" au passage de la souris et vice-versa quand la souris quitte le bouton, le changement d'image se fait bien mais le bouton ne fonctionne plus ; on dirait que l'événement onmouseover empêche la détection de l'événement onclick.

    Normal ?

    Une idée à me soumettre ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Par défaut
    Bonsoir,

    1) pas normal

    2) utiliser jquery


  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par utopman Voir le message
    2) utiliser jquery
    C'est en partie ce que j'essaie de faire mais de quelle manière ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Si j'ajoute les événements onmouseover et onmouseout pour changer le bouton "Abonné" en "Se désabonner"
    Peut-on voir ce code "ajouté" qui est vraisemblablement la source du problème ?

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Willpower Voir le message
    Peut-on voir ce code "ajouté" qui est vraisemblablement la source du problème ?
    Voilà...
    Le bouton est dans une fancybox dont le contenu contient entre autre ce code :
    Code php : 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
    // Le membre connecté suit déjà le votant
    		$html .=		'<div id="btn_following_'.$id_votant.'">';
    		$html .=			'<img id="img_btn_following_'.$id_votant.'"
    								src="images/profil/btn_following_'.$la_langue.'.png"
    								onclick="unfollow('.$id_membre_connecte.', '.$id_votant.', \''.$la_langue.'\');" 					
    								onmouseover="change_btn_following(this, \''.$la_langue.'\', '.$id_membre_connecte.', '.$id_votant.')"
    								onmouseout="change_btn_unfollow(this, \''.$la_langue.'\', '.$id_membre_connecte.', '.$id_votant.')"	
    		/>';	
    	}
    	else 
    	{
    		// Le membre connecté ne suit pas encore le votant
    		$html .=		'<div id="btn_follow_'.$id_votant.'">';
    		$html .=			'<img src="images/profil/btn_follow_'.$la_langue.'.png"
    								style="cursor: pointer;"
    								onclick="follow('.$id_membre_connecte.', '.$id_votant.', 0, \''.$la_langue.'\');"
    							/>';

    Quand le membre suit déjà le votant, le bouton "Abonné" (following) est affiché et si le membre passe la souris sur le bouton, la fonction change_btn_following ci-dessous est lancée :
    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    /**
     * change_btn_following
     * change le bouton following (abonné) en unfollow (se désabonner)
     * @param id
     */
    function change_btn_following(obj, langue, id_membre_connecte, id_votant)
    {
    	obj.src = 'images/profil/btn_unfollow_' + langue + '.png';
    	obj.style.cursor = 'pointer';
    	var texte = 'unfollow(' + id_membre_connecte + ', ' + id_votant + ', \'' + langue + '\')';
     
    	obj.onclick = texte;
     
    }
    En contrôlant avec Firebug, le nouveau contenu de l'image est juste :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <img id="img_btn_following_5" onmouseout="change_btn_unfollow(this, 'fr', 16, 5)" onmouseover="change_btn_following(this, 'fr', 16, 5)" onclick="unfollow(16, 5, 'fr');" src="images/profil/btn_unfollow_fr.png" style="cursor: auto;">

    Mais si l'utilisateur clique sur ce bouton, l'action prévue pour onclick ne s'exécute pas.

    Si je retire les onmouseover et onmouseout de la balise, onclick fait bien son boulot.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    l'affection du onclick dans la fonction change_btn_following annule celle définie dans la balise

    Ta déclaration dans la fonction n'est pas correcte il faudrait que tu fasses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    obj.onclick = function(){
      unfollow( id_membre_connecte, id_votant, langue);
    }
    pour test
    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
    <!DOCTYPE HTML>
    <html lang="fr">
    <head>
    <title>[Test]</title>
    <script type="text/javascript">
    function newFct( obj, txt){
      obj.onclick = function(){
          alert('newFct -> ' + txt);
          return false;
        };
    }
    </script>
    </head>
    <body>
    <a href="#"
      onclick="alert('onclick!'); return false"
      onmouseover ="newFct( this,'Tssst!!!')"
    >TEST</a>
    </body>
    </html>

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Effectivement ça fonctionne mieux comme ça, merci.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. événement "onclick" non pris en charge dans aptana
    Par olivier57b dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 24/03/2010, 00h45
  2. Problème avec événement OnClick de DbGrid
    Par melles dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/10/2008, 17h26
  3. Évènement onclick qui ne fonctionne pas avec FireFox
    Par kilian67 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 19/09/2008, 11h34
  4. Modifier l'événement onClick même avec FAQ
    Par schnito dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 28/09/2007, 12h52
  5. Erreur avec l'évènement OnClick de ListView
    Par xenos dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/03/2006, 14h54

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