Foros del Web » Programando para Internet » Javascript »

javascript- formulario- crear nuevo

Estas en el tema de javascript- formulario- crear nuevo en el foro de Javascript en Foros del Web. Hola: Necesito ayuda con un formulario, más abajo dejo el código para que entiendan de que hablo. Como verán el formulario permite realizar una serie ...
  #1 (permalink)  
Antiguo 22/05/2012, 09:28
 
Fecha de Ingreso: enero-2010
Mensajes: 30
Antigüedad: 14 años, 3 meses
Puntos: 0
javascript- formulario- crear nuevo

Hola:

Necesito ayuda con un formulario, más abajo dejo el código para que entiendan de que hablo.
Como verán el formulario permite realizar una serie de cálculos.
Lo que necesito hacer es que en el botón "agregar ítem" con el evento onclick me permita crear o clonar el formulario, asimismo necesito un botón que me permita eliminarlo.
Por último necesito hacer la sumatoria del campo que llamo subtotal en un nuevo campo llamado total.
Por favor si alguien me puede ayudar u orientar como realizar lo que quiero porque estoy trabado y no se por donde empezar.
Desde ya muchas gracias

Código PHP:
<!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">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin t&iacute;tulo</title>

<
script type="text/javascript">


function 
OperAritmeticas(){
      
interval setInterval("calcular()",1);
}
function 
calcular(){
 var  
cantidad document.FacProvForm.cantidad.value;
 var  
costo   document.FacProvForm.costo.value
 var  
subtotal document.FacProvForm.subtotal.value = (cantidad costo) ;
 var  
PcioVta document.FacProvForm.PcioVta.value;
 var  
gcia document.FacProvForm.gcia.value = (((PcioVta costo)-1)*100) ;
}
function 
NoOperAritmeticas(){
      
clearInterval(interval);
}




</script>

</head>

<body>



<form name="FacProvForm">
<input name="cantidad" type=text onFocus="OperAritmeticas();" onBlur="NoOperAritmeticas();" value="" size="15">
<input name="costo" type=text onfocus="OperAritmeticas();" onblur="NoOperAritmeticas();" value="" size="15" />
<input name="subtotal" type=text size="15">
<input name="PcioVta" type=text onfocus="OperAritmeticas();" onblur="NoOperAritmeticas();" value="" size="15" />
<input name="gcia" type=text size="15">
<input name="Agregar" type="button" onClick= "" value="Agregar Item" />
</form>

</body>
</html> 
  #2 (permalink)  
Antiguo 22/05/2012, 11:05
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: javascript- formulario- crear nuevo

Hola me resulto interesante tu trabajo asi que lo corregi un poco fijate si te sirve y si te hace falta cambiarle algo me avisas ;).

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Documento sin t&iacute;tulo</title>
  5.  
  6. <script type="text/javascript">

Código Javascript:
Ver original
  1. function clon(e) {
  2.     var cantForms = document.getElementsByName("FacProvForm").length;
  3.     var clon = e.parentNode.cloneNode(true);
  4.         clon.Eliminar.onclick = function() {
  5.             document.body.removeChild(this.parentNode);
  6.         }
  7.     clon.calcular = e.parentNode.calcular;
  8.     clon.cantidad.value = 0;
  9.     clon.costo.value = 0;
  10.     clon.subtotal.value = 0;
  11.     clon.PcioVta.value = 0;
  12.     clon.gcia.value = 0;
  13.     document.body.appendChild(clon);   
  14. }
  15.  
  16. function assign() {
  17.     document.forms[0].calcular = function() {
  18.         this.Vcantidad = this.cantidad.value;
  19.         this.Vcosto = this.costo.value;
  20.         this.Vsubtotal = this.subtotal.value = (this.Vcantidad * this.Vcosto) ;
  21.         this.VPcioVta = this.PcioVta.value;
  22.         this.Vgcia = this.gcia.value = (((this.VPcioVta / this.Vcosto)-1)*100) ;
  23.     }
  24.     //alert(document.forms[0].calcular);
  25. }

Código HTML:
Ver original
  1.  
  2. </head>
  3.  
  4. <body onload="assign();">
  5.  
  6. <form name="FacProvForm">
  7. <input name="cantidad" type="text" onkeyup="this.parentNode.calcular()" size="15" value="0">
  8. <input name="costo" type="text" onkeyup="this.parentNode.calcular()" size="15" value="0">
  9. <input name="subtotal" type="text" onkeyup="this.parentNode.calcular()" size="15" value="0">
  10. <input name="PcioVta" type="text" onkeyup="this.parentNode.calcular()" size="15" value="0">
  11. <input name="gcia" type="text" onkeyup="this.parentNode.calcular()" size="15" value="0">
  12. <input name="Agregar" type="button" onClick= "clon(this);" value="Agregar Item" />
  13. <input name="Eliminar" type="button" value="Eliminar Item" />
  14. </form>
  15.  
  16. </body>
  17. </html>

Ahora mismo me estoy yendo si necesitas que te explique como funciona el codigo me avisas

SALUDOS
  #3 (permalink)  
Antiguo 22/05/2012, 15:23
 
Fecha de Ingreso: enero-2010
Mensajes: 30
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: javascript- formulario- crear nuevo

DJAEVI:

GRACIAS, GRACIAS, GRACIAS

Sin tu ayuda me hubiese llevado mucho tiempo poder hacerlo.
Si no es mucho pedir, podrías sugerirme algo para crear un campo que sume el campo que llamo subtotal a medida que voy agregando los items?????????????.

Y de nuevo gracias.
  #4 (permalink)  
Antiguo 22/05/2012, 19:29
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: javascript- formulario- crear nuevo

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Facturas</title>
  5.  
  6.     body {
  7.         font-family:"Trebuchet MS";
  8.     }
  9.    
  10.     #cabecera td {
  11.         width:100px;
  12.         padding-right:6px;
  13.         text-align:center;
  14.         background-color:#EFEFEF;
  15.         border:dashed 1px #DEDEDE;
  16.         }
  17.    
  18.     #ElementosFactura input {
  19.         width:100px;
  20.         text-align:center;
  21.         }
  22.        
  23.     .botones {
  24.         border:1px;
  25.         cursor:pointer;
  26.         margin-left:20px;
  27.         }
  28.        
  29.     #totales {
  30.         padding-top:10px;
  31.         width:100%;
  32.         padding-left:386px;
  33.         }
  34.        
  35.     #totales input {
  36.         width:100px;
  37.         }
  38.        
  39.  
  40. <script type="text/javascript">

Código Javascript:
Ver original
  1. function clon(e) {
  2.         var cantForms = document.getElementsByName("FacProvForm").length;
  3.         var clon = e.cloneNode(true);
  4.             clon.Eliminar.onclick = function() {
  5.                 document.getElementById("ElementosFactura").removeChild(this.parentNode);
  6.                 sumar();
  7.             }
  8.         clon.calcular = e.parentNode.calcular;
  9.         clon.cantidad.value = 0;
  10.         clon.costo.value = 0;
  11.         clon.subtotal.value = 0;
  12.         clon.PcioVta.value = 0;
  13.         clon.gcia.value = 0;
  14.         document.getElementById("ElementosFactura").appendChild(clon);  
  15.     }
  16.      
  17.     function assign() {
  18.         document.forms[0].calcular = function() {
  19.             this.Vcantidad = this.cantidad.value;
  20.             this.Vcosto = this.costo.value;
  21.             this.Vsubtotal = this.subtotal.value = (this.Vcantidad * this.Vcosto) ;
  22.             this.VPcioVta = this.PcioVta.value;
  23.             this.Vgcia = this.gcia.value = (((this.VPcioVta / this.Vcosto)-1)*100) ;
  24.         }
  25.         //alert(document.forms[0].calcular);
  26.     }
  27.    
  28.     function sumar() {
  29.         var subtotales= document.getElementsByName("subtotal");
  30.         var suma = 0;
  31.         for (var i=0; i<subtotales.length; i++) {
  32.             suma += Number(subtotales[i].value);
  33.             }
  34.         document.getElementById("sumaTotal").value = suma;
  35.         }

Código HTML:
Ver original
  1.      
  2.     </head>
  3.      
  4.     <body onload="assign();">
  5.      
  6.     <div id="factura" style="width:800px;">  
  7.         <table id="cabecera" border="0" cellspacing="0" cellpadding="0">
  8.             <tr>
  9.                 <td>Cantidad</td>
  10.                 <td>Costo</td>
  11.                 <td>Subtotal</td>
  12.                 <td>Precio de Venta</td>
  13.                 <td>Ganancia</td>
  14.             </tr>
  15.         </table>
  16.         <div id="ElementosFactura">
  17.             <form name="FacProvForm">
  18.                 <input name="cantidad" type="text" onkeyup="this.parentNode.calcular(); sumar();" size="15" value="0">
  19.                 <input name="costo" type="text" onkeyup="this.parentNode.calcular(); sumar();" size="15" value="0">
  20.                 <input name="subtotal" type="text" onkeyup="this.parentNode.calcular(); sumar();" size="15" value="0">
  21.                 <input name="PcioVta" type="text" onkeyup="this.parentNode.calcular(); sumar();" size="15" value="0">
  22.                 <input name="gcia" type="text" onkeyup="this.parentNode.calcular(); sumar();" size="15" value="0">
  23.                 <input class="botones" name="Agregar" type="button" onClick= "clon(this.parentNode);" value="Agregar Item" />
  24.                 <input class="botones" name="Eliminar" type="button" value="Eliminar Item" />
  25.             </form>
  26.         </div>
  27.         <div id="totales">
  28.             Total: <input type="text" id="sumaTotal" />
  29.         </div>
  30.     </div>
  31.     </body>
  32. </html>

Ahi esta fijate si te sirve, lo probe y anda de paso lo estilize un poco jaja

Saludos

Última edición por djaevi; 23/05/2012 a las 06:47
  #5 (permalink)  
Antiguo 23/05/2012, 07:12
 
Fecha de Ingreso: enero-2010
Mensajes: 30
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: javascript- formulario- crear nuevo

Muchas gracias nuevamente:

Hiciste de un carbón un diamante,

Pero igual te tengo que molestar porque cuando se agrega un nuevo ítem ya no calcula el subtotal del mismo, por lo tanto tampoco actualiza el total. Anoche estuve revisando la función que agregaste para el total pero no me doy cuenta como solucionarlo.

Saludos
  #6 (permalink)  
Antiguo 23/05/2012, 07:52
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: javascript- formulario- crear nuevo

Perdon se me filtro una linea optimizando el codigo cambia:

clon.calcular = e.parentNode.calcular;

por

clon.calcular = e.calcular;

Saludos
  #7 (permalink)  
Antiguo 23/05/2012, 08:35
 
Fecha de Ingreso: enero-2010
Mensajes: 30
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: javascript- formulario- crear nuevo

Funciona de maravilla,
ahora voy a seguir trabajando para que me guarde los datos en las tablas correspondiente.

Saludos y gracias por la ayuda
  #8 (permalink)  
Antiguo 23/05/2012, 16:04
 
Fecha de Ingreso: enero-2010
Mensajes: 30
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: javascript- formulario- crear nuevo

djaevi:

Perdón que te moleste nuevamente pero no puedo enviar la información a otro archivo para grabarlo en la base de datos.
No soy muy bueno con javascript y no logro compreder como crear un formulario (action="insertar_datos.php" method="post">) sin alterar el funcionamiento del formulario "FacProvForm" y a la vez que incluya el total y otros datos como proveedor, la fecha etc.
El proveedor, la fecha, el total etc tienen que grabarse en una tabla diferente, a la tabla en que se debe grabar el formulario "FacProvForm".
No se si podes ayudarme con esto o darme alguna idea porque mis intentos han sido todos fallidos, tan solo pudiendo grabar parcialmente cada linea.

Etiquetas: formulario, html, input
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:19.