bonjour,
j'utilise le tutoriel de modification inline de données que je trouve très bien fait

j'ai essayé d'améliorer en prévoyant le cas d'un champ à modifier à l'aide d'un <select> et j'ai donc rajouté une méthode pour le select pour tester

sur Firefox, la solution adaptée pour un select fonctionne très bien ; par contre, sur IE, lorsque je selectionne dans le select, la sortie se fait par la suppression du select mais il ne réaffiche pas la valeur ensuite !!!

de quoi cela peut-il bien venir ???


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
 
//-----------------------------------------------------------------
 
  //Fonction de modification inline pour un select
function inlineModSelect(id, obj, nomValeur, type, table, login)
{
  if(editionEnCours)
  {
    return false;
  }
  else
  {
    editionEnCours = true;
    sauve = false;
  }
 
  //Objet servant à l'édition de la valeur dans la page
  var select = null;
 
  //On crée un composant différent selon le type de la valeur à modifier
  switch(type)
  {
      case  "select":
      select = document.createElement("select");
      optionb = document.createElement("option");
      textb = document.createTextNode("Choisissez :");
      optionb.appendChild(textb);
      select.appendChild(optionb);
      table_select=get_select("media_movie_genre");
      for (var i=0; i<table_select.length; i++) {
      option+"i"= document.createElement("option");
      text+"i"=document.createTextNode(table_select[i]);
      option+"i".appendChild(text+"i");
      select.appendChild(option+"i");}
      break;
  }
 
  //Assignation de la valeur
  if (obj.innerText)
    select.value = obj.innerText;
  else
    select.value = obj.textContent;
 
  select.value = trim(select.value);
 
  //On lui donne une taille un peu plus large que le texte à modifier
  select.style.width  = getTextWidth(select.value) + 30 + "px";
 
  //Remplacement du texte par notre objet input
  if (login)
  {
  obj.replaceChild(select, obj.firstChild);
  }
  else {alert("Pour effectuer cette opération, vous devez vous connecter en tant que membre.");}
 
  //On donne le focus à l'input et on sélectionne le texte qu'il contient
  select.focus();
  //input.select();
 
  //Assignation des deux événements qui déclencheront la sauvegarde de la valeur
 
  //Sortie de l'input
  select.onblur = function sortir()
  {
    sauverMod(id, obj, nomValeur, select.value, type, table, login);
    delete select;
  };
 
  //Appui sur la touche Entrée
  select.onkeydown = function keyDown(event)
  {
                if (!event&&window.event)
                {
                    event = window.event;
                }
    if(getKeyCode(event) == 13)
                  {
      sauverMod(id, obj, nomValeur, select.value, type, table, login);
      delete select;
    }
  };
}
 
 
//-----------------------------------------------------------------