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

jQuery Discussion :

onclick non pris en compte après intéraction avec le serveur


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 15
    Par défaut onclick non pris en compte après intéraction avec le serveur
    Bonjour,

    Cela fait plusieurs fois que je tombe sur ce problème et j'aimerais trouver ne serait-ce qu'une explication.

    Le contexte : Sur une page que j'aimerais gérer sans rechargement, j'utilise une fonction JS qui utilise jquerry pour rajouter un SELECT avec ses lignes OPTION qui sont issus d'une base de donnée. Jusque la tout marche bien. Maintenant dans ces éléments OPTION, j'ai un attribut onclick qui est censé appeler une fonction. Seulement dans les fait cette fonction n'est jamais lancée. Quand j'utilise l'examinateur de code, déjà, le onclick n'apparait pas. En regardant avec firebug, l'attribut apparait mais ne semble pas fonctionner.

    J'ai lu quelque part que l'ajout de déclencheur en "texte" ne fonctionne pas si celui ci n'était pas présent sur la page au moment de sa génération (donc dans mon cas, puisqu'il est ajouté par du jquerry, c'est en effet la situation dans laquelle je suis.

    Seulement je trouve cela très embettant, je n'ai pas réussi a trouvé de solution sur le net, ni même auprès de mes professeurs. Quelqu'un d'autre a t-il déjà eu a faire avec ce problème ?

    Merci !

    EDIT :

    Voici le code si cela vous aide davantage, c'est donc la fonction hideothername et showothername qui ne sont pas prise en compte après modification :
    mon script 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
    function hideothername(nature) {
    	var nom_bloc_id = "othernamelot";
    	if(nature == '1')
    		$(nom_bloc_id).removeClass().addClass("hidden");
    	else {
    		nom_bloc_id += String(nature);
    		$(nom_bloc_id).removeClass().addClass("hidden");
    	}
    	console.log("lol");
    }
    function addothername(nature) {
    	var nom_bloc_id = "othernamelot";
    	if(nature == '1')
    		$(nom_bloc_id).removeClass().addClass("inline");
    	else {
    		nom_bloc_id += String(nature);
    		$(nom_bloc_id).removeClass().addClass("inline");
    	}
    	console.log("lol");
    }
    function aff_menu(nomtype){
    	if(nomtype == "lot"){
    		$.post("affichermenu.php", { nomtype: "lot" }, function(data){
    			$("#typenature").empty().append( data );
    		});
    	}
    	if(nomtype == "bon"){
    		$.post("affichermenu.php", { nomtype: "bon" }, function(data){
    			$("#typenatur2").empty().append( data );
    		});
    	}
    	if(nomtype == "complement"){
    		$.post("affichermenu.php", { nomtype: "complement" }, function(data){
    			$("#typenatur3").empty().append( data );
    		});
    	}
    	if(nomtype == "info"){
    		$.post("affichermenu.php", { nomtype: "info" }, function(data){
    			$("#typenatur4").empty().append( data );
    		});
    	}
    }
    affichermenu.php

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php
    $nomtype1 = $_POST['nomtype'];
    $bdd = mysqli_connect();
    $nomtype = mysqli_real_escape_string($bdd, $nomtype1);
    $database = "nom".$nomtype."s";
    $datafield = "nom".$nomtype;
    $req = mysqli_query($bdd, "SELECT * FROM $database ORDER BY $datafield");
    $rep = "";
    if($nomtype == "lot"){
    	while($don = mysqli_fetch_array($req)) {
    		$rep.="<OPTION onclick=\"hideothername('1');return false;\">".$don["$datafield"]."</OPTION>";
    	}
    	$rep.="<OPTION onclick=\"addothername('1');return false;\">Autre nom</OPTION>";
    }
    if($nomtype == "bon"){
    	while($don = mysqli_fetch_array($req)) {
    		$rep.="<OPTION onclick=\"hideothername('2');return false;\">".$don["$datafield"]."</OPTION>";
    	}
    	$rep.="<OPTION onclick=\"addothername('2');return false;\">Autre nom</OPTION>";
    }
    if($nomtype == "complement"){
    	while($don = mysqli_fetch_array($req)) {
    		$rep.="<OPTION onclick=\"hideothername('4');return false;\">".$don["$datafield"]."</OPTION>";
    	}
    	$rep.="<OPTION onclick=\"addothername('4');return false;\">Autre nom</OPTION>";
    }
    if($nomtype == "info"){
    	while($don = mysqli_fetch_array($req)) {
    		$rep.="<OPTION onclick=\"hideothername('3');return false;\">".$don["$datafield"]."</OPTION>";
    	}
    	$rep.="<OPTION onclick=\"addothername('3');return false;\">Autre nom</OPTION>";
    }
    mysqli_close($bdd);
    echo $rep;
    ?>

  2. #2
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    Yop!


    Si on simplifie la situation pour tester un peu le truc, on a besoin de quoi?
    Une fonction test(), un peu de Jquery pour créer un select avec ses options qui ont un onclick qui appelle la fonction test()
    Code html : 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
    <!doctype html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>test</title>
     
    	<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    	<script> 
            function test(parametre){
                    alert(parametre);
            }
                    
            $().ready(function(){
     
                    $("#mon_bouton").click(function(){
                            $("#ma_div").append("<select><option onclick=\"test('clic sur data1');return false;\">data1</option><option onclick=\"test('clic sur data2');return false;\">data2</option></select>");
                    });
            
     
            });
            </script> 
     
    </head>
     
    <body>
    	<div id='ma_div'></div>
    	 <button type="button" id='mon_bouton' >Ajouter un select</button> 
     
    </body>
    </html>

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Il est généralement déconseillé d'utiliser les événements onclick sur les balises option. Il est préférable de gérer l'événement onchange de la balise select.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 15
    Par défaut
    @ryan : Oui c'est une configuration similaire, au détail prés que la modification (l'ajout des options) n'est pas directement apporter par jquerry, mais fait appel a une deuxième page php par la méthode "post" et ensuite ajoute le contenu de cette deuxième page (deuxième page ou sont donc contenu les options).

    @Bovino : Je vais faire les modifications et essayer de gérer ça de cette manière, mais je ne suis pas persuadé que cela résolve le problème.

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Il faut toujours écouter les conseils du sage, même lorsqu'il s’appelle Bovino.

    Modifications des options. Code dynamique ! Différences entre on() avec 1 ou 2 sélecteurs

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 15
    Par défaut
    J'ai peut être mal compris alors. C'est d'ailleurs surement ça ^^

    Mais j'ai toujours un peu de mal a voir, comment je dois m'y prendre exactement ?
    Parce qu'en fonction de l'option je lancerais différentes fonctions. Je dois donc mettre un id sur chaque option pour pouvoir gérer la différenciation ?

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2013, 19h33
  2. Commentaires conditionnels non pris en compte avec IE 6
    Par oranjade dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 13/11/2008, 10h10
  3. Onclick non pris en compte sur une div ( sous IE7)
    Par le_chomeur dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/09/2008, 16h40
  4. Evenement onChange non pris en compte avec valeur préenregistrée
    Par Loizo dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 31/01/2008, 13h42
  5. On submit non pris en compte si form soumis par onClick
    Par romulus dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/10/2006, 17h43

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