Eu tenho três abordagens, aqui você pode usar ambos <input>ou <textarea>conforme suas necessidades.
1. Use Input in <td>.
Usando o <input>elemento em todos os <td>s,
<tr><td><input type="text"></td>....</tr>
Além disso, você pode querer redimensionar a entrada para o tamanho dela td. ex.,
input { width:100%; height:100%; }
Além disso, você pode alterar a cor da borda da caixa de entrada quando ela não estiver sendo editada.
2. Use o contenteditable='true'atributo. (HTML5)
No entanto, se você deseja usar contenteditable='true', também pode salvar os valores apropriados no banco de dados. Você pode conseguir isso com ajax.
Você pode anexar keyhandlers keyup, keydown, keypressetc à <td>. Além disso, é bom usar algum delay () com esses eventos quando o usuário digita continuamente, o evento ajax não disparará com cada pressionamento de tecla do usuário. por exemplo,
$('table td').keyup(function() {
clearTimeout($.data(this, 'timer'));
var wait = setTimeout(saveData, 500); // delay after user types
$(this).data('timer', wait);
});
function saveData() {
// ... ajax ...
}
3. Anexe <input>a <td>quando for clicado.
Adicione o elemento de entrada tdao <td>clicar em, substitua seu valor de acordo com o tdvalor de. Quando a entrada estiver borrada, altere o valor de `td's com o valor da entrada. Tudo isso com javascript.