[AJAX] modification "inline" de données avec un <select>
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:
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;
}
};
}
//----------------------------------------------------------------- |