Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire Cours JavaScript, FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 05/07/2009, 20h01   #1
Nouveau membre du Club
 
Date d'inscription: juillet 2006
Localisation: Bretagne
Messages: 54
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
microJaP est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/07/2009, 20h08   #2
Nouveau membre du Club
 
Date d'inscription: juillet 2006
Localisation: Bretagne
Messages: 54
Par défaut

Re;

Voici le code de la fonction "inlineMod" à part :
Code :
//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
microJaP est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/07/2009, 23h06   #3
Nouveau membre du Club
 
Date d'inscription: juillet 2006
Localisation: Bretagne
Messages: 54
Par défaut

Bonjour,

J'ai trouvé le problème de syntaxe du javascript :
Code :
    //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
microJaP est déconnecté   Envoyer un message privé Réponse avec citation
NEWS JAVASCRIPTF.A.Q JSTUTORIELS JSSOURCES JSLIVRES JS

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 02h03.


Vos questions techniques : forum d'entraide JavaScript - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.