2009-01-20 15 views
14

J'ai une table avec des colonnes et des lignes arbitraires. Ce fait est sans importance mais vraiment, tout ce que je veux faire est de développer une fonction qui transforme une rangée (ou plusieurs lignes) en une série d'entrées de texte contenant les données dans la table (ou vide si aucune donnée dans la cellule).jQuery - Modifier une ligne de table en ligne

Je ne trouve aucun exemple de personnes explicitement en train de faire cela, alors je me suis demandé ce que les gens pensent que c'est la meilleure façon de trouver une solution.

Répondre

30

itérer sur les cellules du tableau dans les lignes, et remplacer le contenu avec des entrées de texte:

function editRow(row) { 
    $('td',row).each(function() { 
     $(this).html('<input type="text" value="' + $(this).html() + '" />'); 
    }); 
} 

Vous devez passer la ligne/lignes pertinentes dans la fonction évidemment.

+0

Ce qui se passe si le contenu cellulaire a des entités html? –

+0

J'ai répondu de la manière simpliste que vous avez décrite. J'utilise habituellement une entrée cachée avec les données sous forme brute, et charge l'entrée de texte avec cela. –

+0

@EranGalperin Seriez-vous capable de savoir comment on pourrait sauver le texte après la mise en œuvre de votre exemple? Je remarque que la valeur de l'entrée reste à son origine même après avoir tapé. – Matt

0

comme dit Eran. Cependant, vous pouvez également regarder des propriétés telles que contenteditable et designMode bien que je ne sache pas si elles sont bien supportées. Une fois que vous avez remplacé le contenu par des entrées de texte, vous pouvez utiliser le plugin jquery toggleEdit pour gérer la commutation entre le mode de prévisualisation et le mode d'édition.