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 :

Évènement non intercepté


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut Évènement non intercepté
    Bonjour à tous,

    Je suis face à un problème que je n'arrive pas à résoudre.

    J'ai ajouté en dessous d'un élément un textarea :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#t_eval_8').after('<br /> 10) Remarque complémentaire (non obligatoire) <br /><br /> <textarea id="remarque_compl_mds" rows="10" cols="85" ></textarea>');
    Quand j'essaie de tester un évènement sur l'id du textarea avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#rremarque_compl_mds").on('change', function(){
    	alert("ici");	
    });
    j'obtiens ce message d'erreur :

    TypeError: $("#rremarque_compl_mds").on is not a function
    [Stopper sur une erreur]

    $("#rremarque_compl_mds").on('change', function(){
    J'utilise pourtant la version 1.7.1 de jquery.

    J'ai aussi essayé avec bind (en remplaçant donc on par bind), aucun message d'erreur, mais aucune alerte.

    Ce code me donne toujours 0 (zéro) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var temp = $("#remarque_compl_mds");
    alert(temp.length);

    Merci d'avance pour votre aide.

    bee

  2. #2
    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 : 74
    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
    "#rremarque_compl_mds"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /*
     * L'événement change ce produit lorsque le contenu 
     * du textarea est modifié et que le textarea a 
     * perdu le focus.
     */
    $( "#remarque_compl_mds" ).on( "change", function(){
    	alert( "ici" );
    });
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /*
     * Si le textarea est ajouté dynamiquement après
     * la construction du DOM, il faut utiliser :
     */
    $( "body" ).on( "change", "#remarque_compl_mds", function(){
    	alert( "ici" );
    });

    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.)

  3. #3
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Bonjour Daniel,

    Merci pour ta réponse.

    Après correction du double R, le problème semble persister.

    Google Chrome m'indique :

    Uncaught TypeError: Object [object Object] has no method 'on'
    J'ai donc remplacé on par live :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#remarque_compl_mds").live('mouseover', function(){
    	alert("ici");	
    });
    là, ça fonctionne.

    Pourquoi ? je ne sais vraiment pas....

    Si tu as une explication, elle serait la bienvenue...

    Merci d'avance.

    bee

  4. #4
    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 : 74
    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
    Bonjour

    Pas de méthode on() ? Utilisation d'une version largement obsolète de jQuery ! La dernière version est 1.8.3 !

    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.)

  5. #5
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Bonjour,

    J'ai remplacé la verson 1.7.1 par la 1.8.3 mais le problème du on ne s'est pas résolé pour autant !

    J'ai aussi lu dans la documentation officelle que on était apparu avec la version 1.7 de jquery.

    bee

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Vérifie qu'aucune autre version de jQuery ou autre librairie ne vienne en conflit et remplacer cette fonction $.on.

    Sinon, pour que le binding d'évènements fonctionne avec les éléments créés en Javascript après coup, il faut soit utiliser l'ancienne méthode dépréciée $.live, soit réécrire ton appel de $.on comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $('#t_eval_8').on('change','#remarque_compl_mds', function(){
    ...
    });
    et il faut que ton élément t_eval_8 existe dans le HTML au moment de cet appel. En gros ça veut dire : capture les évènements de type change qui surviennent à l'intérieur de #t_eval_8 et remontent jusqu'à cet élément en ayant une provenance correspondant à #remarque_compl_mds. Tu peux te renseigner sur le fonctionnement des évènements dom et le "event bubbling" pour mieux comprendre ce qui se passe.

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

Discussions similaires

  1. [2.0] Problème évènement non intercepté
    Par luimême dans le forum ASP.NET
    Réponses: 2
    Dernier message: 06/11/2007, 16h59
  2. WM_KEYDOWN non intercepté
    Par Darknicosh dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 19/10/2006, 11h20
  3. mouseMoved -> pertes ou événements non déclenchés
    Par karibouk dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 16/10/2006, 15h55
  4. Gestionnaires d'évènements non déclenchés
    Par Sylvain James dans le forum XMLRAD
    Réponses: 7
    Dernier message: 19/04/2006, 18h14
  5. 'undefined' non interceptable sur 'eval' ?
    Par Johnny Ryall dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/06/2005, 11h28

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