Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/03/2011, 04:55
Avatar de Naahuel
Naahuel
 
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 2 meses
Puntos: 192
Respuesta: Sumar campos con el mismo name

A ver, el primer error es en las dos primeras líneas:

Código Javascript:
Ver original
  1. var total = document.getElementsByName('calcsub[]');
  2. var total = 0;

O sea tu variable total al principio es un objeto que contiene todos los inputs con name calcsub pero en la siguiente línea es nula :P

Otra cosa que observo es que usás notación de jQuery. Si Firebug no te tira error debe ser que lo estás utilizando. El problema es que sólo lo usás en una sola línea :P

Podrías hacer algo así:
Código HTML:
<script>
function sumar(){
	var totalInp = $('[name="calcsub"]'); 
	var total = 0;

	totalInp.each(function(){
		total += parseFloat($(this).val());
	});
	$('#total').val(total);
}
</script>

<div id="soy-un-div-que-se-desvanece">
	<p><input name="calcsub" /></p>
	<p><input name="calcsub" /></p>
	<p><input name="calcsub" /></p>
	<input id = "total" />
	<a href="#" onclick="sumar(); return false;">Sumar</a>	
</div> 
En ese caso usamos el método de jQuery .each(), que itera entre todos los elementos que obtuvo del selector (todos los inputs con name 'calcsub'). El problema es que parseFloat() retorna NaN para cuando el parámetro es undefined (lo cual es comprensible) que es lo que devuelve .val() si el input está en blanco. Podrías arreglar eso así:
Código Javascript:
Ver original
  1. totalInp.each(function(){
  2.     var valor = $(this).val();
  3.     if(valor == ""){ valor = 0;};
  4.     total += parseFloat(valor);
  5. });

De esta forma podés dejar inputs en blanco y estos valdrán 0.
__________________
nahueljose.com.ar