Foros del Web » Programando para Internet » Javascript »

funcion para sumar moneda (decimales)

Estas en el tema de funcion para sumar moneda (decimales) en el foro de Javascript en Foros del Web. Hola buen dia, un formulario en el cual se ingresa mes a mes una cantidad de dinero que se va sumando al final de este, ...
  #1 (permalink)  
Antiguo 23/10/2009, 09:47
 
Fecha de Ingreso: julio-2009
Mensajes: 77
Antigüedad: 14 años, 9 meses
Puntos: 0
funcion para sumar moneda (decimales)

Hola buen dia, un formulario en el cual se ingresa mes a mes una cantidad de dinero que se va sumando al final de este, suma bien si son enteros pero como tengo que colocar una cantidad luego del punto decimal esa cantidad la guarda en la base de datos pero no la va sumando, declare mi variables como decimales en MySQL.
Código HTML:
<script> 
function id(x) { 
return document.getElementById(x); 
								} 
											
function toInt(x) { 
return parseInt(id(x).value, 10); 
									} 
											
function calcularTotal() { 
var a = toInt('enero'), 
b = toInt('febrero'), 
c = toInt('marzo'), 
d = toInt('abril'), 
e = toInt('mayo'), 
f = toInt('junio'), 
g = toInt('julio'), 
i = toInt('agosto'), 
j = toInt('septiembre'),											        
k = toInt('octubre'), 
z = toInt('noviembre'), 															
x = toInt('diciembre'), 														
l = toInt('monto'); 																        										
											     
a = isNaN(a) ? 0 : a; 											    
b = isNaN(b) ? 0 : b; 											    
c = isNaN(c) ? 0 : c; 											    
d = isNaN(d) ? 0 : d; 											   
e = isNaN(e) ? 0 : e; 											    
f = isNaN(f) ? 0 : f; 											    
g = isNaN(g) ? 0 : g; 											    
i = isNaN(i) ? 0 : i; 
j = isNaN(j) ? 0 : j; 											    
k = isNaN(k) ? 0 : k; 												   										    
z = isNaN(z) ? 0 : z; 											    
x = isNaN(x) ? 0 : x; 											    
l = isNaN(l) ? 0 : l;											     
													
														 
id('monto').value = a + b + c + d + e + f + g + i + j + k + x + z; 											    
	} 										
id('enero').onkeyup = calcularTotal; 											
id('febrero').onkeyup = calcularTotal;											 
id('marzo').onkeyup = calcularTotal; 											
id('abril').onkeyup = calcularTotal; 										
id('mayo').onkeyup = calcularTotal; 
id('junio').onkeyup = calcularTotal; 
id('julio').onkeyup = calcularTotal; 
id('agosto').onkeyup = calcularTotal; 
id('septiembre').onkeyup = calcularTotal; 
id('octubre').onkeyup = calcularTotal;
id('noviembre').onkeyup = calcularTotal;
id('diciembre').onkeyup = calcularTotal;
id('monto').onkeyup = calcularTotal; 
											
</script> 
Agradeceria cualquier ayuda
  #2 (permalink)  
Antiguo 23/10/2009, 10:05
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: funcion para sumar moneda (decimales)

Si vas a trabajar con decimales, debes usar parseFloat en lugar de parseInt.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 23/10/2009, 11:30
 
Fecha de Ingreso: julio-2009
Mensajes: 77
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: funcion para sumar moneda (decimales)

Si gracias David ya lo resolvi cambiando lo que dijiste y viendo otros ejemplos del foro gracias dejo la solucion
Código HTML:
<script> 
function id(x) { 
return document.getElementById(x); 
								} 
											
function toFloat(x) { 
return parseFloat(id(x).value, 10); 
									} 
											
function calcularTotal() { 
var a = toFloat('enero'), 
b = toFloat('febrero'), 
c = toFloat('marzo'), 
d = toFloat('abril'), 
e = toFloat('mayo'), 
f = toFloat('junio'), 
g = toFloat('julio'), 
i = toFloat('agosto'), 
j = toFloat('septiembre'),											        
k = toFloat('octubre'), 
z = toFloat('noviembre'), 															
x = toFloat('diciembre'), 														
l = toFloat('monto'); 																        										
											     
a = isNaN(a) ? 0 : a; 											    
b = isNaN(b) ? 0 : b; 											    
c = isNaN(c) ? 0 : c; 											    
d = isNaN(d) ? 0 : d; 											   
e = isNaN(e) ? 0 : e; 											    
f = isNaN(f) ? 0 : f; 											    
g = isNaN(g) ? 0 : g; 											    
i = isNaN(i) ? 0 : i; 
j = isNaN(j) ? 0 : j; 											    
k = isNaN(k) ? 0 : k; 												   										    
z = isNaN(z) ? 0 : z; 											    
x = isNaN(x) ? 0 : x; 											    
l = isNaN(l) ? 0 : l;											     
													
														 
id('monto').value = a + b + c + d + e + f + g + i + j + k + x + z; 											    
	} 										
id('enero').onkeyup = calcularTotal; 											
id('febrero').onkeyup = calcularTotal;											 
id('marzo').onkeyup = calcularTotal; 											
id('abril').onkeyup = calcularTotal; 										
id('mayo').onkeyup = calcularTotal; 
id('junio').onkeyup = calcularTotal; 
id('julio').onkeyup = calcularTotal; 
id('agosto').onkeyup = calcularTotal; 
id('septiembre').onkeyup = calcularTotal; 
id('octubre').onkeyup = calcularTotal;
id('noviembre').onkeyup = calcularTotal;
id('diciembre').onkeyup = calcularTotal;
id('monto').onkeyup = calcularTotal; 
											
</script> 
Solo otra pregunta como puedo hacer para que solo me desplegue 2 decimales en el total porque me salen como 5 y no lo necesito así (aclaro en MySQL si guarda solo dos decimales) pero en el formulario los muestra.

Gracias

Última edición por edanalvi; 23/10/2009 a las 11:36
  #4 (permalink)  
Antiguo 23/10/2009, 13:40
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: funcion para sumar moneda (decimales)

Hola

Con permiso David

Prueba con esto

Otra opción sería usar la función toFixed

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Última edición por Adler; 23/10/2009 a las 14:39 Razón: dar otra opción
  #5 (permalink)  
Antiguo 23/10/2009, 16:25
 
Fecha de Ingreso: julio-2009
Mensajes: 77
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: funcion para sumar moneda (decimales)

Adler

Cabie todos los toFloat y coloque toFixed pero ahora no me hace la suma total, o a lo mejor no entendí? puedes ejemplificarme.

Gracias
  #6 (permalink)  
Antiguo 24/10/2009, 05:01
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: funcion para sumar moneda (decimales)

Hola

Se trata de usarlo en el resultado final. Mira esto

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 14:30.