Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] sumar inputs dinamicos

Estas en el tema de sumar inputs dinamicos en el foro de Javascript en Foros del Web. Hola que tal, tengo una cuestion y llevo varios dias y no he podido resolverla. Tengo una tabla con inputs que se generan dinamicamente segun ...
  #1 (permalink)  
Antiguo 25/01/2014, 12:20
 
Fecha de Ingreso: enero-2014
Mensajes: 9
Antigüedad: 10 años, 2 meses
Puntos: 0
sumar inputs dinamicos

Hola que tal, tengo una cuestion y llevo varios dias y no he podido resolverla.

Tengo una tabla con inputs que se generan dinamicamente segun una consulta de mysql. Mi problema es que quiero sumar determinados inputs ya que tengo dos grupos, los de id=cantidad y de id=numero, lo que quiero es que cuando ingresen alguna cantidad en los inputs de cantidad estos se sumen (solo los de cantidad) y se muestre el resultado automaticamente en un label.

He echo la siguiente funcion

Código Javascript:
Ver original
  1. function calcular_fiscal(id)
  2. {
  3.    
  4.     var a = parseFloat(eval("document.getElementById('"+id+"').value"));
  5.     suma = suma + a;
  6.     document.getElementById('total_monto_fiscal').innerHTML = suma;
  7.    
  8. }

Es muy simple, lo que hago aqui es qe cuando se llene un input se mande el id y lo sume a un acumulador. Este proceso lo hace correctamente, el problema es cuando el usuario borra un input, ya que llama la funcion pero se manda un valor NaN y ya no hace suma.

Espero alguien me pueda ayudar, es muy urgente.
  #2 (permalink)  
Antiguo 25/01/2014, 12:32
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 6 meses
Puntos: 578
Respuesta: sumar inputs dinamicos

Tienes que comprobar que sea un número:

Código Javascript:
Ver original
  1. function calcular_fiscal(id)
  2. {
  3.     var a = parseFloat(document.getElementById(id).value);
  4.  
  5.     if(!isNaN(a)){
  6.        suma = suma + a;
  7.        document.getElementById('total_monto_fiscal').innerHTML = suma;
  8.     }
  9.    
  10. }

Última edición por PHPeros; 25/01/2014 a las 12:47 Razón: oops
  #3 (permalink)  
Antiguo 25/01/2014, 13:01
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 15 años, 11 meses
Puntos: 9
Respuesta: sumar inputs dinamicos

No sé si entendí bien, pero me parece que cada vez que se modifica un input tienes que hacer toda la cuenta de nuevo ya que no sabes si estás ingresando un valor en un input por primera vez o si estás modificando uno que ya sumaste antes a la cuenta.
__________________
Saludos.

Gustavo
  #4 (permalink)  
Antiguo 27/01/2014, 09:48
 
Fecha de Ingreso: enero-2014
Mensajes: 9
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: sumar inputs dinamicos

Cita:
Iniciado por Gustavo72 Ver Mensaje
No sé si entendí bien, pero me parece que cada vez que se modifica un input tienes que hacer toda la cuenta de nuevo ya que no sabes si estás ingresando un valor en un input por primera vez o si estás modificando uno que ya sumaste antes a la cuenta.
Sii eso es lo que necesito gustavo72, lo habia echo con un ciclo for pero no me llamaba ningun numero porqe necesito hacerlo con el id del input.
  #5 (permalink)  
Antiguo 27/01/2014, 09:50
 
Fecha de Ingreso: enero-2014
Mensajes: 9
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: sumar inputs dinamicos

Cita:
Iniciado por PHPeros Ver Mensaje
Tienes que comprobar que sea un número:

Código Javascript:
Ver original
  1. function calcular_fiscal(id)
  2. {
  3.     var a = parseFloat(document.getElementById(id).value);
  4.  
  5.     if(!isNaN(a)){
  6.        suma = suma + a;
  7.        document.getElementById('total_monto_fiscal').innerHTML = suma;
  8.     }
  9.    
  10. }
Esto ya lo habia intentado pero no se como modificarlo para que si se borra el numero del input se reste de la suma que ya estaba
  #6 (permalink)  
Antiguo 27/01/2014, 10:22
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 15 años, 11 meses
Puntos: 9
Respuesta: sumar inputs dinamicos

Si usaras jQuery, podrías hacer algo así:

Código HTML:
Ver original
  1. <script type="text/javascript" src="jquery.js"></script>
  2. <script type="text/javascript">
  3. var total=0;
  4. $(document).ready(function() {
  5.     $('input.cantidad').blur(function() { calcular_total() });
  6.     calcular_total();
  7. });
  8. function calcular_total() {
  9.     total=0;
  10.     $('input.cantidad').each(function() {
  11.         var v=parseFloat($(this).val());
  12.         if (isNaN(v)) {
  13.             v=0;
  14.             $(this).val(0);
  15.         }
  16.         total+=v;
  17.     });
  18.     $('div#total_monto_fiscal').html(total);
  19. }
  20. </head>
  21. <input type="text" class="cantidad" value="5"><br>
  22. <input type="text" class="cantidad" value="6"><br>
  23. <input type="text" class="cantidad" value="7">
  24. </form>
  25. <div id="total_monto_fiscal"></div>
  26. </body>
  27. </html>
__________________
Saludos.

Gustavo
  #7 (permalink)  
Antiguo 27/01/2014, 13:01
 
Fecha de Ingreso: enero-2014
Mensajes: 9
Antigüedad: 10 años, 2 meses
Puntos: 0
De acuerdo Respuesta: sumar inputs dinamicos

Cita:
Iniciado por Gustavo72 Ver Mensaje
Si usaras jQuery, podrías hacer algo así:

Código HTML:
Ver original
  1. <script type="text/javascript" src="jquery.js"></script>
  2. <script type="text/javascript">
  3. var total=0;
  4. $(document).ready(function() {
  5.     $('input.cantidad').blur(function() { calcular_total() });
  6.     calcular_total();
  7. });
  8. function calcular_total() {
  9.     total=0;
  10.     $('input.cantidad').each(function() {
  11.         var v=parseFloat($(this).val());
  12.         if (isNaN(v)) {
  13.             v=0;
  14.             $(this).val(0);
  15.         }
  16.         total+=v;
  17.     });
  18.     $('div#total_monto_fiscal').html(total);
  19. }
  20. </head>
  21. <input type="text" class="cantidad" value="5"><br>
  22. <input type="text" class="cantidad" value="6"><br>
  23. <input type="text" class="cantidad" value="7">
  24. </form>
  25. <div id="total_monto_fiscal"></div>
  26. </body>
  27. </html>

Si! ya lo adecue a mis inputs y funciona, muchas gracias Gustavo72

Etiquetas: dinamicos, funcion, html, input, inputs, valor
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 19:28.