2010-01-11 36 views
5

Tengo una tabla con algunas filas ... Quiero poder seleccionar una fila y hacer clic en modificar y podré editar todas las celdas de esa fila ...Editar una celda de tabla HTML

¿Cómo puedo hacer que una celda se pueda editar en Javascript? ¿Y es mejor usar Jquery?

Respuesta

3

Puede insertar cuadros de texto dentro de cada celda y configurar los valores para que sean los de la celda de la tabla.

Algo como esto

$(function(){ 
     $("#tbl1 tr").click (function(){ 
      if (!$(this).hasClass('clicked')) 
      { 
       $(this).children('td').each (function() { 
        var cellValue = $(this).text(); 
        $(this).text('').append ("<input type='text' value='" + cellValue + "' />"); 
       }); 

       $(this).addClass('clicked'); 
      } 
     }); 
    }); 
<table id="tbl1"> 
      <tr> 
       <td>1</td> 
       <td>4</td> 
       <td>3</td> 
      </tr> 
      <tr> 
       <td>4</td> 
       <td>5</td> 
       <td>6</td> 
      </tr> 
     </table> 

para que pueda realizar un botón de actualización y obtener los valores de los cuadros de texto y actualización.

4

Aquí hay una quick concept sólo trabaje para usted:

$(function(){ 
    $("button[name='doModify']").click(function(){ 
    // disable out modify button 
    $(this).attr("disabled","disabled"); 
    // enable our save button 
    $("button[name='save']").removeAttr("disabled"); 
    // cycle through each row having marked for modification 
    $(":checkbox[name='modify']:checked").each(function(){ 
     $(this).closest("tr").find("td:gt(0)").each(function(){ 
     // convert each cell into an editable region 
     $(this).wrapInner("<textarea name='"+$(this).attr("rel")+"'></textarea>"); 
     }); 
    }); 
    }); 
}); 

-

<table border="1" cellspacing="1" cellpadding="5"> 
    <tbody> 
    <tr> 
     <td><input type="checkbox" name="modify" /></td> 
     <td rel="username[]">jon.doe</td> 
     <td rel="information[]">This is my bio.</td> 
    </tr> 
    <tr> 
     <td><input type="checkbox" name="modify" /></td> 
     <td rel="username[]">jonathan.sampson</td> 
     <td rel="information[]">This is my bio.</td> 
    </tr> 
    <tr> 
     <td><input type="checkbox" name="modify" /></td> 
     <td rel="username[]">yellow.05</td> 
     <td rel="information[]">This is my bio.</td> 
    </tr> 
    <tr> 
     <td colspan="3" align="right"> 
     <button name="doModify">Modify</button> 
     <button name="save" disabled="disabled">Save</button> 
     </td> 
    </tr> 
    </tbody> 
</table> 
+0

Él sí declara técnicamente que quiere hacer clic en algún tipo de botón de 'modificar', pero en mi humilde opinión que su forma es mejor. yellow-05, lo que hace esta función es convertir las celdas de la tabla que hagas doble clic en áreas de texto, por lo que tendrás que expandir un poco para que haga toda la fila – Mala

+0

@Mala, he actualizado el código un poco. – Sampson

11

No hay necesidad de hacer su propio código, ya existe un plugin para jQuery para este propósito. Pruebe jEditable, puede hacer exactamente lo que necesita.

Su página de demostración tiene algunos buenos ejemplos:

http://www.appelsiini.net/projects/jeditable/default.html

+8

Primero quieren que se reconozca su religión, ¡ahora estos Jedi quieren mesas para ellos solos! ¿Dónde terminará? –

Cuestiones relacionadas