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 :

Récupération d'évènement d'une liste


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut Récupération d'évènement d'une liste
    Bonjour,

    A partir du tutoriel "Modification "inline" de données avec AJAX", j'ai ajouté une liste à choix multiple. Elle se charge sans problème à partir de la BDD, la valeur qui était dans le texte avant le double-clic est bien sélectionnée.

    Le problème est que aucun évènement n'est intercepté sur ma liste.

    Dans le tableau de base, toutes les colonnes ne sont pas modifiables, et elle n'ont pas toutes le même type de formulaire. Hors les cellules "textes" fonctionnent correctement. Je n'est pas testé l'enregistrement dans la BDD, mais cela n'a pas d'importance pour l'instant.

    Je ne trouve rien sur les "champs listes", il doit bien y avoir déjà eu des essais à ce propos, d'avance merci !

    microJaP

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut
    Re;

    Voici le code de la fonction "inlineMod" à part :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    //Fonction de modification inline de l'élément double-cliqué
    function inlineMod(ID_Coder, id, obj, nomValeur, type)
    {
        if(editionEnCours)
        {
            return false;
        }
        else
        {
            editionEnCours = true;
            sauve = false;
        }
     
        //Objet servant à l'édition de la valeur dans la page
        var input = null;
     
        //On crée un composant différent selon le type de la valeur à modifier
        switch(type)
        {
            //Valeur de type texte ou nombre
            case "texte":
            case "nombre":
                input = document.createElement("input");
                break;
     
            //Valeur de type texte multilignes
            case  "texte-multi":
                input = document.createElement("textarea");
                break;
     
            //Valeur de type Liste MultiSelect
            case  "MultiSelect":
                input = document.createElement("select");
                break;
        }
     
        //Assignation de la valeur dans une valeur temporaire
        if (obj.innerText)
            ValObj = obj.innerText;
        else {
            ValObj = obj.textContent;
        }
     
        if (type == "MultiSelect") {  //  Chargement et affectation de la liste
            getSelectListe(ID_Coder, input, ValObj);
        } else {  // Script original pour les autres champs
            input.value = ValObj;
            input.value = trim(input.value);
     
            //On lui donne une taille un peu plus large que le texte à modifier
            input.style.width  = getTextWidth(input.value) + 30 + "px";
        }
     
     
        //Remplacement du texte par notre objet input
        obj.replaceChild(input, obj.firstChild);
     
        //On donne le focus à l'input et on sélectionne le texte qu'il contient
        input.focus();
        input.select();
     
        //Assignation des deux événements qui déclencheront la sauvegarde de la valeur
     
        //Sortie de l'input
        input.onblur = function sortir()
        {
            sauverMod(id, obj, nomValeur, input.value, type);
            delete input;
        };
     
        //Appui sur la touche Entrée
        input.onkeydown = function keyDown(event)
        {
            if (!event&&window.event)
            {
                event = window.event;
            }
            if(getKeyCode(event) == 13)
            {
                sauverMod(id, obj, nomValeur, input.value, type);
                delete input;
            }
        };
     
        // Ajout d'un évenement pour voir !!!!
        //Changement de valeur dans la liste
        input.onchange = function ListeChange(event)
        {
            if (!event&&window.event)
            {
                event = window.event;
            }
            if(getKeyCode(event) == 13)
            {
                sauverMod(id, obj, nomValeur, input.value, type);
                delete input;
            }
        };
    }
    La variable "ID_Coder" me sert pour récupérer les données dans la BDD.

    microJaP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    J'ai trouvé le problème de syntaxe du javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        //On donne le focus à l'input et on sélectionne le texte qu'il contient
        input.focus();
        input.select();
    La sélection du texte ne peut pas se faire dans une liste.

    J'ai trouvé cette erreur grâce à une nouvelle doc que je viens de recevoir justement sur AJAX : il s'agit du livre "Web 2.0 avec Ajax et PHP", il propose d'utiliser conjointement "FireFox" et le plug-in " FireBug" pour le développement. Hors c'est FireFox qui m'a trouvé ou était le bug !

    Je ne connaissais pas la puissance de FireBug, à utiliser sans modération je pense !

    microJaP

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/05/2007, 23h39
  2. Problème sur évènement d'une liste déroulante
    Par krfa1 dans le forum Access
    Réponses: 7
    Dernier message: 05/05/2006, 08h03
  3. [SQL] Problème de récupération des valeurs d'une liste multiple en php
    Par BOLARD dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/05/2006, 00h29
  4. récupération des données via une liste déroulante
    Par rahan_dave dans le forum Access
    Réponses: 1
    Dernier message: 13/10/2005, 12h27
  5. [Débutant][jsp] évènement sur une liste
    Par phoebe dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h53

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