|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Nouveau membre du Club
![]() Date d'inscription: juillet 2006
Localisation: Bretagne
Messages: 54
|
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 |
|
Nouveau membre du Club
![]() Date d'inscription: juillet 2006
Localisation: Bretagne
Messages: 54
|
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; } }; } microJaP |
|
|
|
|
|
#3 |
|
Nouveau membre du Club
![]() Date d'inscription: juillet 2006
Localisation: Bretagne
Messages: 54
|
Bonjour,
Code :
//On donne le focus à l'input et on sélectionne le texte qu'il contient
input.focus();
input.select();
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écupération d'évènement d'une liste
|
||
| Outils de la discussion | |
|
|