124 votes

Comment rendre une cellule de tableau HTML modifiable ?

J'aimerais rendre certaines cellules d'un tableau html modifiables. Il suffit de double-cliquer sur une cellule, de saisir du texte et les modifications sont envoyées au serveur. Je ne veux pas utiliser certaines boîtes à outils comme la grille de données Dojo. Parce qu'il fournit d'autres fonctionnalités. Pourriez-vous me fournir un extrait de code ou des conseils sur la façon de l'implémenter ?

Merci.

6voto

Ahmad Halah Points 61

Vous pouvez utiliser x-editable https://vitalets.github.io/x-editable/ sa bibliothèque géniale de bootstrap

5voto

gsivanov Points 103

Il suffit d'insérer <input> élément dans <td> dynamiquement, au clic de la cellule. Seulement du simple HTML et Javascript. Pas besoin de contentEditable , jquery , HTML5

https://Jsfiddle.net/gsivanov/38tLqobw/2/

5voto

mathmaniac88 Points 505

C'est le point essentiel, même si vous n'avez pas besoin de rendre le code aussi désordonné. Au lieu de cela, vous pourriez simplement itérer à travers tous les fichiers <td> et ajoutez le <input> avec les attributs et enfin mettre les valeurs.

function edit(el) {
  el.childNodes[0].removeAttribute("disabled");
  el.childNodes[0].focus();
  window.getSelection().removeAllRanges();
}
function disable(el) {
  el.setAttribute("disabled","");
}

<table border>
<tr>
<td ondblclick="edit(this)"><input value="cell1" disabled onblur="disable(this)"></td>
<td ondblclick="edit(this)"><input value="cell2" disabled onblur="disable(this)"></td>
<td ondblclick="edit(this)"><input value="cell3" disabled onblur="disable(this)"></td>
<td ondblclick="edit(this)"><input value="so forth..." disabled onblur="disable(this)">
</td>
</tr>
</table>

4voto

user3751006 Points 19

Essayez ce code.

$(function () {
 $("td").dblclick(function () {
    var OriginalContent = $(this).text();

    $(this).addClass("cellEditing");
    $(this).html("<input type="text" value="&quot; + OriginalContent + &quot;" />");
    $(this).children().first().focus();

    $(this).children().first().keypress(function (e) {
        if (e.which == 13) {
            var newContent = $(this).val();
            $(this).parent().text(newContent);
            $(this).parent().removeClass("cellEditing");
        }
    });

 $(this).children().first().blur(function(){
    $(this).parent().text(OriginalContent);
    $(this).parent().removeClass("cellEditing");
 });
 });
});

Vous pouvez également visiter ce lien pour plus de détails :

0 votes

Pour éviter les problèmes dans IE avec $(this).children().first().focus() ; -. stackoverflow.com/a/3562193/5234417

3voto

user3333866 Points 19

Si vous utilisez Jquery, ce plugin vous aidera est simple, mais est bon

https://github.com/samuelsantosdev/TableEdit

3 votes

Cela semble être un plugin intéressant. La documentation pour savoir comment l'utiliser se trouve dans le fichier index.html. Veuillez jeter un coup d'œil à meta.stackexchange.com/questions/8231/ pour voir pourquoi inclure plus d'informations qu'un simple lien permet d'obtenir une meilleure réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X