LOGIN
Reg&iuacute;strateLinksForosPrivadosPrivadosContacta
 
FOROS > Programación
<< < 6 [7]    Crear los campos de un formulario dinámicamente con javascri ...
27/02/2009    13:22


Registrado: 26/02/2009
Nº mensajes: 2

  victorbatan QuotePrivado  
 
Hola Living:

Muchas muchas gracias, lo voy a probar y te cuento.
Esto que hacés es un gran servicio, gracias por tu generosidad.
Saludos desde Argentina, Patagonia.!
 
 

es real lo real?


 
04/03/2009    17:52


Registrado: 04/03/2009
Nº mensajes: 2

  Efrain QuotePrivado  
 
Hola Living.
Gracias por el codigo y script que publicaste, me gustaria que me ayudaras, como terner una fila de insercion creada con el script que publicaste cuando se cargue en la presentacion(web), me gustaria que se viera como el siguiente codigo, desde ya Gracias por tu TIEMPO.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script>
function agregaFila( id ) {
var tabla = document.getElementById( id );
var tbody = document.getElementById( tabla.id ).tBodies[0];
var row = tbody.rows[0] .cloneNode( true );
var id = 1;
while( document.getElementById( tabla.id+'_fila_'+id ) ) {
id++;

}
if (id<=7){
row.id = tabla.id+'_fila_'+id;
row.style.display = '';
tbody.appendChild( row );
}
}

function borraFila( fila ) {
var id = fila.id;
if( fila.parentNode.rows.length <= 2 ) return;
document.getElementById( id ).parentNode.removeChild( document.getElementById(id) );
}

</script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
  <table id="tabla_1" align="center">
  <thead>
    <tr valign="baseline">
      <td nowrap="nowrap" align="center">Numfactura:</td>
      <td align="center">Descripcion:</td>
      <td align="center">Cantidad:</td>
      <td>&nbsp;</td>
   </thead>
   <tbody>
    </tr>
    <tr id="clonable" style="display:none">
      <td nowrap="nowrap" align="right"><input id='numfactu' name='numfactura' type="text" value="" size="32" /></td>
      <td><input name="descripcion" type="text" id="descripcion" value="" size="32" /></td>
      <td><input name="cantidad" type="text" id="cantidad" value="" size="32" /></td>
      <td><a href="#" onClick="borraFila(this.parentNode.parentNode)">El iminar</a></td>
    </tr>
    <tr id="tabla_1_fila_1" >
      <td nowrap="nowrap" align="right"><input name="numfactura" type="text" id="numfactura" value="" size="32" /></td>
      <td><input name="descripcion" type="text" id="descripcion" value="" size="32" /></td>
      <td><input name="cantidad" type="text" id="cantidad" value="" size="32" /></td>
      <td>&nbsp;</td>
    </tr>
    </tbody>
    <tr valign="baseline">
      <td nowrap="nowrap" align="center"><a href="javascript:agregaFila( 'tabla_1' );">Agregar Fila</a></td>
      <td colspan="3" align="center"><input type="submit" value="Insertar registro" /></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1" />
</form>
</body>
</html>
 
 
 
06/03/2009    01:15


Registrado: 04/03/2009
Nº mensajes: 2

  Efrain QuotePrivado  
 
Hola Living, gracias por tu codigo, te estaba preguntando en la entrada anterior como tener una fila de la tabla dinamica insertado cuando se cargue la pagina pues encontre la solucion solo tenia que llamar a la funcion en <body onLoad= a funcion>, bueno lo que si me gustaria y hasta ahora no logro como validar  los campos creador con la tabla dinamica, si alguien que participa en este foro puede tambien ayudarme les agradesere por su tiempo.
 
 
 
11/03/2009    12:57


Registrado: 14/04/2004
Nº mensajes: 490

  Living QuotePrivado  
 
Hola Efrain!!.

En este post lo expliqué:

http://www.livinbride.com/foro/showThread.php?id=1435&desde=50#msg1586


 
 

El mayor placer de un hombre inteligente es aparentar ser idiota, delante de un idiota que aparenta ser inteligente.


 
20/06/2009    08:48


Registrado: 20/06/2009
Nº mensajes: 2

  yayo QuotePrivado  
 
hOLA QUE TAL amigo, espero que aun no sea demasiado tarde para hacer preguntas.

La verdad tu codigo esta excelente casi me leiste la mente.

He revizado todos las diferentes variantes que se han realizado yo intento agregar un conjunto de productos que al darle  clic sobre el boton agregar automaticamente devuelva el codigo, nombre y precio del producto, hasta ahi todo va bien, sin embargo en donde tengo problemas es que: Necesito que si le vuelven a dar clic a un producto que ya este agregado a la lista me aunemente automaticamente la cantidad y no agregue otra linea. No se si me explico. Ya estuve intentando hacerlo validad que si encuentra en la lista el codigo ya no lo agregue sin embargo no me sale. Te pongo el codigo que segun yo deberia hacerlo. Ojala me puedas ayudar en esto de antemano muchos gracias...

Esta es la funcion donde pretendo que valide que si ya existe no agregue una fila mas si no que aumente en uno la cantidad del producto ya agregado previamente: "El problema es que no respeta la condicion y me sigue agregando los prodcutos a pesar de que ya estan en la lista."

function addPerson(Codigo,Nombre,Precio){

 for (i=1;i<=indiceFilaFormulario;i++){
    var Bandera = 0;
    var Co = document.getElementById("codigo"+i);
    if (Co == Codigo)
    {
        Bandera = 1;
        document.getElementById("cant"+i) += 1;
        i=indiceFilaFormulario+1; //Si ya esta el producto agregado a la lista se termina el For
    }
 }
 if (Bandera == 0)
 {

 myNewRow = document.getElementById("tablaFormulario").insertRow(-1);
 myNewRow.id=indiceFilaFormulario;
 
 myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td> <input size='10' type='text' name='codigo["+indiceFilaFormulario+"]' id='codigo["+indiceFilaFormulario+"]' value='"+ Codigo +"' ></td>";
 
  myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td> <input size='20' type='text' name='nombre["+indiceFilaFormulario+"]' id='nombre["+indiceFilaFormulario+"]' value='"+ Nombre +"' ></td>";
 
 myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td><input size='6' type='text' name='cant["+indiceFilaFormulario+"]' id='cant"+indiceFilaFormulario+"'  value='1' onKeyUp='fncActualizar("+indiceFilaFormulario+")'</td>";
 
 myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td><input size='7'  type='text' name='precio["+indiceFilaFormulario+"]' value='"+ Precio +"' id='precio"+indiceFilaFormulario+"' onKeyUp='fncActualizar("+indiceFilaFormulario+")'</td>";
 
 myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td><input  size='10' type='text' name='sub["+indiceFilaFormulario+"]'  id='sub"+indiceFilaFormulario+"' value='0'> </td>";
 
  myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td><input class='red' type='button' value='-' onclick='removePerson(this)'  ></td>";
 indiceFilaFormulario++;
 }
}


y aqui te dejo todo el completo

<?
include("scripts/conec.php");
$link=Conectar();

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejemplo formulario</title>

<script language="javascript" type="text/javascript">
var indiceFilaFormulario=1;
var xban;
function addPerson(Codigo,Nombre,Precio){

 for (i=1;i<=indiceFilaFormulario;i++){
    var Bandera = 0;
    var Co = document.getElementById("codigo"+i);
    if (Co == Codigo)
    {
        Bandera = 1;
        document.getElementById("cant"+i) += 1;
        i=indiceFilaFormulario; //Si ya esta el producto agregado a la lista se termina el For
    }
 }
 if (Bandera == 0)
 {

 myNewRow = document.getElementById("tablaFormulario").insertRow(-1);
 myNewRow.id=indiceFilaFormulario;
 
 myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td> <input size='10' type='text' name='codigo["+indiceFilaFormulario+"]' id='codigo["+indiceFilaFormulario+"]' value='"+ Codigo +"' ></td>";
 
  myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td> <input size='20' type='text' name='nombre["+indiceFilaFormulario+"]' id='nombre["+indiceFilaFormulario+"]' value='"+ Nombre +"' ></td>";
 
 myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td><input size='6' type='text' name='cant["+indiceFilaFormulario+"]' id='cant"+indiceFilaFormulario+"'  value='1' onKeyUp='fncActualizar("+indiceFilaFormulario+")'</td>";
 
 myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td><input size='7'  type='text' name='precio["+indiceFilaFormulario+"]' value='"+ Precio +"' id='precio"+indiceFilaFormulario+"' onKeyUp='fncActualizar("+indiceFilaFormulario+")'</td>";
 
 myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td><input  size='10' type='text' name='sub["+indiceFilaFormulario+"]'  id='sub"+indiceFilaFormulario+"' value='0'> </td>";
 
  myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td><input class='red' type='button' value='-' onclick='removePerson(this)'  ></td>";
 indiceFilaFormulario++;
 }
}


function removePerson(obj){
 var oTr = obj;
 while(oTr.nodeName.toLowerCase()!='tr'){
  oTr=oTr.parentNode;
 }
 var root = oTr.parentNode;
 root.removeChild(oTr);
}

var total;
function fncActualizar(indiceFilaFormulario)
{
var total = document.getElementById("total");
var subt=document.getElementById("sub");
var iva=document.getElementById("iva");
subt.value=0;
for (i=1;i<=indiceFilaFormulario;i++){
    var sub = document.getElementById("sub"+i);
    var precio = document.getElementById("precio"+i);
    var cant = document.getElementById("cant"+i);
    sub.value=parseInt(precio.value)*parseInt(cant.value);
    subt.value=parseInt(subt.value)+parseInt(sub.value);
 }
 total.value=parseInt(subt.value)+(parseInt(subt.value)*parseInt(iva.value)/100);
};
</script>
</head>
<body>
 <form action="formu.php" name="formulario" method="post">
<table width="603" align="center" cellpadding="0" cellspacing="0" >
      <tr>
        <td colspan="3" align="center">&nbsp;</td>
      </tr>
      <tr>
        <td colspan="3">
 <table width="600" align="center" cellpadding='3' cellspacing='3' bgcolor="#91E3FB" id="tablaFormulario" style="border:#CBDDEB">
            <tr bgColor='#95C6F7'>
              <td width="69"><div align="center"><strong>Codigo </strong></div></td>
              <td width="147"><div align="center"><strong>Nombre</strong></div></td>
              <td width="87"><div align="center"><strong>Cantidad</strong></div></td>
     <td width="85"><div align="center"><strong>Pecio</strong></div></td>
      <td width="89"><div align="center"><strong>Sub-Total</strong></div></td>
              <td width="58"><div align="center"><strong>Eliminar</strong></div></td>
            </tr>
          </table></td>
      </tr>
      <tr>
        <td colspan="3">
            <!--Aqui agrego la lista de productos desde la BD. Y pasp por parametro el Codigo, Descripcion o nombre y Precio a la funcion addPerson.. -->
        <?php
            echo "<table>";
            $sql_productos=mysql_query("SELECT * FROM productos WHERE Existencia>0 Order By Descripcion",$link) or die(mysql_error());
            $row_productos=mysql_fetch_array ($sql_productos);
                while ($row_productos)
                {
                    $i=1;//i es el numero de columnas de la tabla
                    echo "<tr>";
                    while ($i<=4 and $row_productos)
                    {
                        printf("<td align=center><input type=button onClick=addPerson('%s','%s','%s') value=Add><br>%s</td>",$row_productos["Codigo"],$row_productos["Descripcion"],$row_productos["Precio"],$row_productos["Descripcion"]);
                        ++$i;
                        $row_productos=mysql_fetch_array ($sql_productos);
                    }
                    echo "</tr>";
                }
                mysql_free_result($sql_productos);
                echo "</table>";
        ?>              
       
        </td>
      </tr>
      <tr>
        <td><div align="right"><strong>Sub-Total</strong></div></td>
        <td><div align="right">
          <input  size='10' type='text' name="sub" id="sub" onChange='fncActualizar' value='0'>
        </div></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td><div align="right"><strong>Iva</strong></div></td>
        <td><div align="right">
          <input  size='10' type='text' name="iva" id="iva" onChange='fncActualizar' value='0'>
        </div></td>
        <td><div align="right"></div></td>
      </tr>
      <tr>
        <td width="435"><div align="right"><strong>Total</strong></div></td>
        <td width="93">
    <div align="right">
      <input  size='10' type='text' name="total" id="total" onChange='fncActualizar' value='0'>
    </div></td>
        <td width="73">
          <div align="right"><input type="text" name="mostrar2" id="mostrar2" onChange="mostrarcodigo(2)"><input type="text" name="mostrar" id="mostrar"></div></td>
      </tr>
   </table>

 </form>
</body>
</html>
 
 

De vuelta y vuelta


 
24/06/2009    21:27


Registrado: 20/06/2009
Nº mensajes: 2

  yayo QuotePrivado  
 
Holaa amigo sigo esperando una respuestaaa, ojala me pudieras ayudar, Graciasss..
 
 

De vuelta y vuelta


 
12/07/2009    06:14

 
Registrado: 11/10/2007
Nº mensajes: 5

  duke100 QuotePrivado  
 

Estimado living

De nuevo te felicito por tu script, pero ahora lo estoy modificando para un caso particular

necesito que cuando el usuario seleccione por ejemplo la opcion sala2 me ponga un campo adicional input text llamado serial, para el resto de las opciones que da igual, es decir sala1 y sala3

he intentado colocar in if en el select pero no me funciona

a continuació el codigo:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejemplo formulario</title>
<script language="javascript" type="text/javascript">
var indiceFilaFormulario=1;
function addPerson(){
 myNewRow = document.getElementById("tablaFormulario").insertRow(-1);
 myNewRow.id=indiceFilaFormulario;
myNewCell=myNewRow.insertCell(-1);
var nuevoSelect="";
 nuevoSelect+="<td> <select name='sala["+indiceFilaFormulario+"]' >";
 nuevoSelect+="<option value='1'>sala 1</option> ";
 nuevoSelect+="<option value='2'>sala 2</option> ";
 nuevoSelect+="<option value='3'>sala 3</option> ";
 nuevoSelect+="</select></td>";
myNewCell.innerHTML=nuevoSelect;

 myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td><input  type='text' name='equipo["+indiceFilaFormulario+"]'></td>";
 myNewCell=myNewRow.insertCell(-1);
 myNewCell.innerHTML="<td><input type='button'  value='Eliminar' onclick='removePerson(this)'></td>";
 indiceFilaFormulario++;
}
 
function removePerson(obj){
 var oTr = obj;
 while(oTr.nodeName.toLowerCase()!='tr'){
  oTr=oTr.parentNode;
 }
 var root = oTr.parentNode;
 root.removeChild(oTr);
}
</script>
</head>
<body>
 <form action="<?=$_SERVER['PHP_SELF']?>" name="formulario" method="post">
<table cellpadding="0" cellspacing="0" >
      <tr>
        <td align="center">&nbsp;</td>
      </tr>
      <tr>
        <td><table cellpadding='3' cellspacing='3' style='border:#999999 double' bgColor='bisque'  id="tablaFormulario">
            <tr bgColor='#CCCCCC'>
              <td width="175">Sala</td>
              <td width="175">Equipo</td>
              <td width="100">Eliminar</td>
            </tr>
          </table></td>
      </tr>
      <tr>
        <td align="right"><input type="button" onClick="addPerson()" value="Añadir Recurso" ></td>
      </tr>
      <tr>
      <td align="center"><input type="submit" name="enviar" value="Enviar"></td>
      </tr>
    </table>
    </form>
</body>
</html>


de antemano muchas gracias

 
 
 
08/09/2009    06:30

 
Registrado: 08/09/2009
Nº mensajes: 1

  r2kjet QuotePrivado  
 
Hola Living no se si sera muy tarde para escribir pero por favor necesito ayuda urgente.

Tengo un formulario bien grande con varios campos en varios formularios que los quiero enviar todos de un solo envio, esto lo hago con un boton general por medio de ajax y jquery asi:

  $(".button").click(function() {
// validate and process form
// first hide any error messages
    $('.error').hide();
 var nombre = $("input#nombre").val();
if (nombre == "") {
      $("label#nombre_error").show();
      $("input#nombre").focus();
      return false;
    }
    
      var posicion = $("select#posicion").val();
     if (posicion == "") {
      $("label#posicion_error").show();
      $("select#posicion").focus();
      return false;
    }
      
      var gradosal = $("input#gradosal").val();
if (gradosal == "") {
      $("label#gradosal_error").show();
      $("input#gradosal").focus();
      return false;
    }
    
      var area = $("select#area").val();
     if (area == "") {
      $("label#area_error").show();
      $("select#area").focus();
      return false;
    }
    
      var seccion = $("select#seccion").val();
     if (seccion == "") {
      $("label#seccion_error").show();
      $("select#seccion").focus();
      return false;
    }
    
    
     var country = $("select#country").val();
     if (country == "") {
      $("label#country_error").show();
      $("select#country").focus();
      return false;
    }
    
      var city = $("select#city").val();
     if (city == "") {
      $("label#city_error").show();
      $("select#city").focus();
      return false;
    }  
    

 var identificacion = $("input#identificacion").val();
if (identificacion == "") {
      $("label#identificacion_error").show();
      $("input#identificacion").focus();
      return false;
    }
    
    
      var fechaingreso = $("input#fechaingreso").val();
if (fechaingreso == "") {
      $("label#fechaingreso_error").show();
      $("input#fechaingreso").focus();
      return false;
    }

 
 var empresa = $("input#empresa").val();
if (empresa == "") {
      $("label#empresa_error").show();
      $("input#empresa").focus();
      return false;
    }
    
      var departamento = $("select#departamento").val();
     if (departamento == "") {
      $("label#departamento_error").show();
      $("select#departamento").focus();
      return false;
    }
    
      var reporta = $("input#reporta").val();
     if (reporta == "") {
      $("label#reporta_error").show();
      $("select#reporta").focus();
      return false;
    }
    
      var sexo = $("select#sexo").val();
     if (seccion == "") {
      $("label#sexo_error").show();
      $("select#sexo").focus();
      return false;
    }
    
    
    var imageToUpload = $("input#imageToUpload").val();
     if (imageToUpload == "") {
      $("label#imageToUpload_error").show();
      $("select#imageToUpload").focus();
      return false;
    }
    
    var objetivo1 = $("textarea#objetivo1").val();
     if (objetivo1 == "") {
      $("label#objetivo1_error").show();
      $("textarea#objetivo1").focus();
      return false;
    }
    
    var medicion1 = $("textarea#medicion1").val();
     if (medicion1 == "") {
      $("label#medicion1_error").show();
      $("textarea#medicion1").focus();
      return false;
    }
    
    var comemprev1 = $("textarea#comemprev1").val();
     if (comemprev1 == "") {
      $("label#comemprev1_error").show();
      $("textarea#comemprev1").focus();
      return false;
    }
    
    var comempeva1 = $("textarea#comempeva1").val();
     if (comempeva1 == "") {
      $("label#comempeva1_error").show();
      $("textarea#comempeva1").focus();
      return false;
    }
    
    var comsuprev1 = $("textarea#comsuprev1").val();
     if (comsuprev1 == "") {
      $("label#comsuprev1_error").show();
      $("textarea#comsuprev1").focus();
      return false;
    }
    
    var comsupeva1 = $("textarea#comsupeva1").val();
     if (comsupeva1 == "") {
      $("label#comsupeva1_error").show();
      $("textarea#comsupeva1").focus();
      return false;
    }
    
var dataString = 'nombre='+ nombre + '&posicion=' + posicion + '&gradosal=' + gradosal + '&area=' + area + '&seccion=' + seccion + '&country=' + country + '&city=' + city + '&identificacion=' + identificacion + '&fechaingreso=' + fechaingreso + '&empresa=' + empresa + '&departamento=' + departamento + '&reporta=' + reporta + '&sexo=' + sexo + '&imageToUpload=' + imageToUpload + '&objetivo1=' + objetivo1 + '&medicion1=' + medicion1 + '&comemprev1=' + comemprev1 + '&comempeva1=' + comempeva1 + '&comsuprev1=' + comsuprev1 + '&comsupeva1=' + comsupeva1;
//alert (dataString);return false;
$.ajax({
      type: "POST",
      url: "procesar.php",
      data: dataString,
      success: function() {
        $('.container').html("<div id='message'></div>");
        $('#message').html("<h2>Datos guardados!</h2>")
        .append("<p>Exitoso.</p>")
        .hide()
        .fadeIn(1500, function() {
          $('#message').append("<img id='checkmark' src='img/check.png' />");
        });
      }
     });
    return false;
});
});

lo que quiero es tambien enviar las variables de los campos dinamicos por medio de esta funcion que va creando las variables para posteriormente procesarlas por medio de php y guardarlas a la base de datos. No se si haya que hacer un while, for, if .. en realidad no tengo idea de como agregar estos campos dinamicos que son los unicos que me faltan enviar. Y ademas quisiera saber cómo al mandarlos a esta bd que se vayan añadiendo los campos correspondientes ya que no estan creados.

Espero me entiendas y me puedas ayudar en estas dos cosas.
Si quieres te envio todo el formulario que tengo. 
 
 
 
09/09/2009    01:31


Registrado: 04/01/2009
Nº mensajes: 6

  Selena QuotePrivado  
 
Hola Chicos y Chicas a
 
 

Selena


 
09/09/2009    01:37


Registrado: 04/01/2009
Nº mensajes: 6

  Selena QuotePrivado  
 
Hola amigos aqui les dejo un codigo que le puede ser util para las personas que estan trabajando con adicion y sutraccion en tablas es un poco complicado pero si estudian bien el codigo podran conseguirle un muy buen uso yo lo utilice con el codigo de facturacion que consulte en esta paginas dias atras Espero que sea de gran utilidad
<html>
<head>
<meta/>
<title></title>
<script language="javascript" type="text/javascript">

var miTabla = 'tabla'; // poner aquí el id de la tabla que queremos editar

// preparar la tabla para edición
function iniciarTabla() {
tab = document.getElementById(miTabla);
filas = tab.getElementsByTagName('tr');
for (i=1; fil = filas[i]; i++) {
celdas = fil.getElementsByTagName('td');
for (j=1; cel = celdas[j]; j++) {
if ((i>0 && j==celdas.length-1) || (i==filas.length-1 && j!=0)) continue; // La última columna y la última fila no se pueden editar
cel.onclick = function() {crearInput(this)}
} // end for j
} //end for i

// añadir funcion onclick a las imágenes para borrar y añadir y ocultar las imágenes de borrar
for (i=0; im = document.images[i]; i++)
if (im.alt=='añadir fila')
im.onclick = function() {anadir(this,0)}
else if (im.alt=='añadir columna')
im.onclick = function() {anadir(this,1)}
else if (im.alt=='borrar fila') {
im.onclick = function() {borrar(this,0)}
im.style.visibility = 'hidden';
}
else if (im.alt=='borrar columna') {
im.onclick = function() {borrar(this,1)}
im.style.visibility = 'hidden';
}
} // end function

// crear input para editar datos
function crearInput(celda) {
celda.onclick = function() {return false}
txt = celda.innerHTML;
celda.innerHTML = '';
obj = celda.appendChild(document.createElement('input'));
obj.value = txt;
obj.focus();
obj.onblur = function() {
txt = this.value;
celda.removeChild(obj);
celda.innerHTML = txt;
celda.onclick = function() {crearInput(celda)}
sumar();
}
}

// sumar los datos de la tabla
function sumar() {
tab = document.getElementById(miTabla);
filas = tab.getElementsByTagName('tr');
sum = new Array(filas.length);
for (i=0; i<sum.length; i++)
sum[i]=0;
for (i=2, tot=filas.length-1; i<tot; i++) {
total = 0;
celdas = filas[i].getElementsByTagName('td');
for (j=2, to=celdas.length-1; j<to; j++) {
num = parseFloat(celdas[j].innerHTML);
if (isNaN(num)) num = 0;
total += num;
sum[j-2] += num;
} // end for j
celdas[celdas.length-1].innerHTML = total;
sum[j-2] += total;
} // end for i

subt = filas[filas.length-1].getElementsByTagName('td');
for (i=2, tot=subt.length; i<tot; i++)
subt[i].innerHTML = sum[i-2];
} // end function

// añadir filas o columnas
function anadir(obj,num) {
if (num==0) { // añadir filas
fila = obj.parentNode.parentNode;
nuevaFila = fila.cloneNode(true);
im = nuevaFila.getElementsByTagName('img');
im[0].onclick = function() {anadir(this,0)}
im[1].onclick = function() {borrar(this,0)}
for (i=2, tot=nuevaFila.getElementsByTagName('td').length-1; i<tot; i++) {
nuevaFila.getElementsByTagName('td')[i].onclick = function() {crearInput(this)} ;
nuevaFila.getElementsByTagName('td')[i].innerHTML = 0;
}
fila.parentNode.insertBefore(nuevaFila,fila);
} // end añadir filas

else { // añadir columnas
tab = document.getElementById(miTabla);
cabecera = tab.getElementsByTagName('tr')[0];
// averiguar nº de columna
for (num=0; cel = cabecera.getElementsByTagName('td')[num]; num++)
if (cel==obj.parentNode) break;
for (i=0; fila = tab.getElementsByTagName('tr')[i]; i++) {
ele = fila.getElementsByTagName('td')[num];
nuevaColumna = ele.cloneNode(true);
if (i==0) {
im = nuevaColumna.getElementsByTagName('img');
im[0].onclick = function() {anadir(this,1)}
im[1].onclick = function() {borrar(this,1)}
}
else {
nuevaColumna.innerHTML = (i==1) ? '' : 0;
nuevaColumna.onclick = function() {crearInput(this)} ;
}
fila.insertBefore(nuevaColumna,ele);
} //end for i
} // end añadir columnas
mostrarImagenes();
}

// borrar filas o columnas
function borrar(obj,num) {
if (num==0) { // borrar filas
tab = obj.parentNode.parentNode.parentNode;
tab.removeChild(obj.parentNode.parentNode);
} // end borrar filas
else { // borrar columnas
tab = document.getElementById(miTabla);
cabecera = tab.getElementsByTagName('tr')[0];
// averiguar nº de columna
for (num=0; cel = cabecera.getElementsByTagName('td')[num]; num++)
if (cel==obj.parentNode) break;
for (i=0; fila = tab.getElementsByTagName('tr')[i]; i++)
fila.removeChild(fila.getElementsByTagName('td')[num]);
}
sumar();
mostrarImagenes();
}

// mostrar/ocultar imagenes para borrar
function mostrarImagenes() {
tab = document.getElementById(miTabla);
filas = tab.getElementsByTagName('tr');
columnas = filas[0].getElementsByTagName('td');
numFilas = filas.length;
numColumnas = columnas.length;
for (i=0; im=tab.getElementsByTagName('img')[i]; i++)
if (im.alt == 'borrar fila')
im.style.visibility = (numFilas>5) ? 'visible' : 'hidden';
else if (im.alt == 'borrar columna')
im.style.visibility = (numColumnas>5) ? 'visible' : 'hidden';
}
</script>
</head>


<body onload="iniciarTabla()">
<table id="tabla">
<tr class="cabeza">
<td width="105" class="orden">&nbsp;</td><td width="50">&nbsp;</td>
<td width="96">Cantidad 1</td><td width="129">Cantidad 2</td>
<td width="99">Sub-Total</td>
</tr>
<tr>
<td class="orden">&nbsp;<img src="editatabla/anadir.gif" alt="añadir fila" />&nbsp;<img src="editatabla/menos.gif" alt="borrar fila" /></td><td class="orden">&nbsp;</td>
<td>0</td><td>0</td><td>0</td>
</tr>
<tr>

<td class="orden">&nbsp;<img src="editatabla/anadir.gif" alt="añadir fila" />&nbsp;<img src="editatabla/menos.gif" alt="borrar fila" /></td><td class="orden">&nbsp;</td>
<td>0</td><td>0</td><td>0</td>
</tr>
<tr>
<td class="orden">&nbsp;</td>
<td class="orden">&nbsp;</td><td>&nbsp;</td><td><div align="right"><span class="orden">Total</span></div></td><td>0</td>
</tr>
</table>
</body>
</html>


 
 

Selena


 
       << < 6 [7]