SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
30.04.2025

Editando Células de Tabela HTML: Clique Duplo e Salvar

Resposta Rápida

Torne uma célula <td> editável usando o atributo contentEditable:

<td contentEditable="true">Texto para editar</td>

Dica: Defina o valor de contentEditable como "true" para tornar a célula editável. Isso pode ser comparado a mudar um alternador para o modo de leitura-escrita no contexto de HTML. Discutiremos as nuances desse mecanismo em mais detalhes abaixo. 😉

Ativando a Edição com Clique Duplo

Para ativar a edição da célula com um clique duplo, utilize um manipulador de eventos:

document.querySelectorAll('td').forEach(td => {
  td.ondblclick = function() {
    this.contentEditable = true; // "Alegria, agora estamos no modo de edição!" 🏉
  };
});

Tratando Eventos e Salvando Mudanças

Importante: As mudanças não são salvas automaticamente. Você precisa monitorar a ocorrência do evento blur, que indica que a célula perdeu o foco (significando que a edição foi concluída):

td.onblur = function() {
  this.contentEditable = false; // "Hora do AJAX enviar dados para o servidor!" 🚛
};

Proteção de Dados Através da Validação

Garanta a integridade dos dados em seu aplicativo verificando a precisão das entradas:

td.onblur = function() {
  if (isValid(this.innerText)) { 
    this.contentEditable = false; // Se tudo estiver correto, podemos salvar 👍
  } else {
    alert('Entrada inválida!'); // Erro! 🚩
    this.focus(); // Levar o usuário de volta à edição
  }
};

A função isValid deve ser definida de acordo com as regras de validação do seu aplicativo.

Aprimorando a Interface com Entrada Dinâmica

Adicione dinamismo à interface substituindo texto estático por um campo <input>:

td.ondblclick = function() {
  let input = document.createElement('input');
  input.value = this.innerText; // "Bem-vindo ao novo campo de entrada!" ✨
  this.innerHTML = '';
  this.appendChild(input);
  input.focus();
};

Após finalizar a edição, assegure-se de que o campo <input> está corretamente posicionado na célula e foi removido:

input.onblur = function() {
  td.innerHTML = this.value; // Transferência de dados concluída, campo de entrada enviado para o histórico!
};

Visualização

Transforme a célula de uma exibição estática para um formulário interativo:

Célula da Tabela (Antes) Célula da Tabela (Depois)
📄 (Exibição de dados simples) 📝✍️ (Agora editável!)

A edição é ativada alterando o atributo contenteditable nas células:

<td>📄</td> <!-- Modo de visualização -->
<td contenteditable="true">📝✍️</td> <!-- E aqui está o modo de edição! -->

Parabéns, você dominou a interação interativa com tabelas. 😎

Teclado — A Ferramenta dos Profissionais

Utilize atalhos de teclado para uma edição mais conveniente:

input.onkeydown = function(e) {
  if (e.key === 'Enter') { // "Finalizando a edição." 🎯
    // Salvar mudanças e sair do modo de edição
  } else if (e.key === 'Escape') { // "De jeito nenhum! Vamos voltar!" 🆘
    // Cancelar todas as mudanças e voltar
  }
};

Segurança na Transmissão de Dados

A segurança da transmissão de dados é um elemento importante que afeta não apenas a conformidade com as melhores práticas, mas também a lógica de negócios:

  • Autenticação usando tokens CSRF ou chaves de API.
  • Garantia de privacidade dos dados com HTTPS.
  • Implementação de sanitização e validação no lado do servidor para prevenir ataques XSS.

Verificação de Compatibilidade do Navegador

contenteditable é um recurso HTML5. Verifique se os navegadores dos seus usuários suportam essa funcionalidade.

Minimização de Solicitações Desnecessárias ao Servidor

Não sobrecarregue o servidor com solicitações excessivas. Implemente um mecanismo de limitação para controlar o processo de salvamento de dados.

A Simplicidade é a Chave para o Sucesso

Lembre-se: a simplicidade é melhor do que a complexidade.

  • É mais fácil trabalhar com JavaScript puro sem usar bibliotecas pesadas.
  • Indicadores visuais para o modo de edição são implementados em CSS.
  • Seleção automática de texto ao entrar no modo de edição.

Recursos Úteis

  1. contenteditable - HTML: HyperText Markup Language | MDNGuia MDN sobre como trabalhar com o atributo contenteditable.
  2. HTML Global contenteditable Attribute — Material de aprendizado sobre contenteditable no W3Schools.
  3. X-editable :: Edição em tempo real com Twitter Bootstrap, jQuery UI ou jQuery puro — Biblioteca X-editable para criar tabelas editáveis avançadas.
  4. Top 10 Designs de Tabelas CSS — Smashing Magazine — Os 10 principais designs de tabelas para seus projetos futuros.
  5. javascript - Definir a posição do cursor em uma <div> contentEditable - Stack Overflow — Uma masterclass sobre como controlar a posição do cursor em elementos editáveis no Stack Overflow.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!