Comment faire HTML cellule de tableau modifiable?
J'aimerais faire quelques cellules de tableau html modifiable, il suffit de double-cliquer sur une cellule, de saisir du texte et les modifications peuvent être envoyés au serveur. Je ne veux pas utiliser certains outils de de comme dojo de grille de données. Parce qu'il propose d'autres fonctionnalités. Voulez-vous me donner quelques extrait de code ou des conseils sur la façon de la mettre en œuvre?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser l'attribut contenteditable sur les cellules, les lignes, ou de la table en question.
Mis à jour pour la compatibilité IE8
Il suffit de noter que si vous faites de la table modifiable, dans Mozilla au moins, vous pouvez supprimer des lignes, etc.
Vous auriez également besoin de vérifier si votre public cible est les navigateurs pris en charge cet attribut.
Autant que l'écoute pour que les modifications (de sorte que vous pouvez envoyer vers le serveur), voir contenteditable les événements de changement de
<td contenteditable=true>
ne fait pas de la cellule modifiable dans IE. J'ai pensé contenteditable était pour aucun de l'élément HTML?HTMLElement
interface définie à html.spec.whatwg.org/multipage/... -> met en œuvreElementContentEditable
-> défini à html.spec.whatwg.org/multipage/... -> les références à "modification d'hôte" dans le dvcs.w3.org/hg/editing/raw-file/tip/editing.html#editing-host -- aucune de ces semblent permettre de restreindre les éléments de soutien contenteditable. Bienvenue dans le monde merveilleux de navigateur de bugs 🙂contenteditable
div chaque fois que vous créez un nouveau<td>
. Sinon, comme indiqué dans le post, vous pouvez ajouter lecontenteditable
sur les cellules, les lignes, ou de la table.HTML5 prend en charge contenteditable,
3ème partie modifier
Pour citer le mdn entrée sur contenteditable
true
, c'est quoi le nom est. Par exemple,<td contenteditable='contenteditable'></td>
.J'ai trois approches,
Ici, vous pouvez utiliser à la fois
<input>
ou<textarea>
selon vos exigences.1. Utilisez l'Entrée dans
<td>
.À l'aide de
<input>
élément dans tous les<td>
s,Aussi, vous pouvez redimensionner l'entrée à la taille de son
td
. ex.,Vous pouvez également changer la couleur de la bordure de la zone d'entrée, quand il n'est pas en cours d'édition.
2. Utilisation
contenteditable='true'
attribut. (HTML5)Cependant, si vous souhaitez utiliser
contenteditable='true'
, vous pouvez également enregistrer les valeurs appropriées de la base de données. Vous pouvez réaliser cela avec ajax.Vous pouvez joindre keyhandlers
keyup
,keydown
,keypress
etc, à la<td>
. Aussi, il est bon d'utiliser certains delay() avec ces événements lorsque l'utilisateur en permanence types, l'ajax d'événement ne se déclenche pas à chaque utilisateur de presse. par exemple,3. Ajouter
<input>
à<td>
lorsqu'il est cliqué.Ajouter l'élément d'entrée dans
td
lorsque le<td>
est cliqué, remplacez sa valeur en fonction de latd
's de la valeur. Lorsque l'entrée est floue, changer le td de la valeur à l'entrée de la valeur. Tout cela avec javascript.contenteditable=true
pouvez-vous m'aider dans cette s'il vous plaît?Essayer ce code.
Vous pouvez aussi visiter ce lien pour plus de détails :
Vous pouvez utiliser x-modifiable https://vitalets.github.io/x-editable/
son impressionnante bibliothèque de bootstrap
Si vous utilisez Jquery, ce plugin vous aider
est simple, mais il est bon
https://github.com/samuelsantosdev/TableEdit
C'est une seule et praticable exemple.
Il suffit d'insérer
<input>
élément<td>
de manière dynamique, sur la cellule, cliquez sur. Seulement simple en HTML et Javascript. Pas besoin decontentEditable
,jquery
,HTML5
https://Jsfiddle.net/gsivanov/38tLqobw/2/
c'est en fait aussi simple,
c'est mon HTML, jQuery exemple.. et il fonctionne comme un charme, j'ai construit tout le code à l'aide en ligne de données json de l'échantillon.
cheers
<< HTML >>
<< jQuery >>
C'est le point essentiel bien que vous n'avez pas besoin de rendre le code de ce désordre. Au lieu de cela, vous pourriez juste itérer sur tous les
<td>
et ajouter le<input>
avec les attributs et enfin mettre en valeurs.JS:
HTML: