Changement de td à la zone de texte lorsque l'utilisateur clique dessus et changer de zone de texte retour à la td lorsque l'utilisateur est fait
Je suis à la recherche d'une certaine manière l'utilisateur peut modifier un td à partir de la table en cliquant sur elle. Mon installation actuelle est lorsqu'un utilisateur clique sur un td, il doit remplacer les cliqué td par une zone de texte qui contient le texte de l'cliqué td. Ensuite, lorsque l'utilisateur clique en dehors de cela, appuie sur entrée. Il devrait changer la zone de texte retour à la td.
C'est le Tableau que j'ai:
<table class="table" id="tableCompleted">
<thead>
<tr>
<th>Name</th>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<td>Jesse</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td>David</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
</tr>
</tbody>
</table>
C'est le script que j'ai écrit, le problème que j'ai est que, lorsqu'un utilisateur clique sur un td, il remplace tous les td et je n'ai pas compris comment faire pour le changer en arrière quand il perd le focus. J'ai essayé à l'aide d'un bouton, mais qu'il est encore pire. Aussi le texte de la td ne pas se placer à l'intérieur de la zone de texte.
Le script que j'ai utilisé pour cela:
$('td').click(function () {
$('td').replaceWith(function () {
return '<input type="text" id="modify" "value="' + $('#Text').val() + '" />';
});
})
Actuellement j'ai 3 problèmes avec elle, je ne sais pas comment faire pour changer seulement la td qui est cliqué, parce que tous les td ne disposez pas d'un id unique ou de la classe. Et je ne suis pas sûr de savoir comment le changer en arrière lorsque l'utilisateur se fait à le changer. Il est également à ne pas placer le contenu de la td à l'intérieur de la zone de texte.
OriginalL'auteur Dr. Banana | 2015-07-26
Vous devez vous connecter pour publier un commentaire.
Pour faire référence à l'élément cliqué, vous pouvez utiliser le
this
mot-clé:Aussi vous ne devriez pas remplacer le
td
avec uninput
, car untr
élément ne peut pas avoir uninput
enfant. Au lieu de supprimer le textContent de latd
et ajouter uninput
à elle. Voici un moyen de mise en œuvre de cette:Voici une démo à l'aide de l'extrait ci-dessus.
Vous avez également un plus raisonnable option:
contentEditable
propriété.À l'aide de la propriété navigateur gère le montage. Vous pouvez ajouter manuellement un
contentEditable
aux cellules cibles dans votre balisage ou d'utiliser le JavaScript pour la modification de l'attribut.contentEditable
l'attribut jsfiddle.net/10u9rgfcOriginalL'auteur undefined
Pur javascript solution ici. Et de plus jsfiddle démo
Lutte contre la criminalité 🙂
OriginalL'auteur fubbe
Vous pouvez utiliser
this
. Ici, c'est un travail démo.Pour le récupérer, vous pouvez utiliser joindre
focusout
surthis
.Pourquoi est ce droit, il corrups l'ensemble de la table.
Essayez ceci, jsfiddle.net/sachinnambiar/7o8tk8bo
Cette solution crée des invalides de balisage et il n'ya aucune garantie que le bout de code fonctionne dans tous les navigateurs.
Cela pourrait être ce que l'OP a demandé, c'est juste que ce que l'OP a demandé qui est faux. Vérifiez f.e. @Vohuman 's réponse à la place.
OriginalL'auteur Sachin Nambiar Nalavattanon