Foros del Web » Programando para Internet » Javascript »

Problema con formulario y decimales.

Estas en el tema de Problema con formulario y decimales. en el foro de Javascript en Foros del Web. Hola amigos, arto de buscar y no conseguir mi proposito os pongo aqui mi problema y ojala me puedan ayudar, tambien os pego aqui mi ...
  #1 (permalink)  
Antiguo 28/05/2007, 10:26
 
Fecha de Ingreso: mayo-2007
Mensajes: 48
Antigüedad: 17 años
Puntos: 0
Problema con formulario y decimales.

Hola amigos, arto de buscar y no conseguir mi proposito os pongo aqui mi problema y ojala me puedan ayudar, tambien os pego aqui mi codigo para ver si me lo solucionan os explico.
Necesito que en el apartado factura me haga el subtotal el iva y el total, por ahora lo que me hace con el codigo que tengo es, el precio que lo que hace es multiplicar la cantidad por el importe, CA1*IM1 y asi sucesivamente en las 7 lineas, y en el precio escribe el precio y eso lo hace con los decimales bien y como yo quiero, si por ejemplo en la cantidad pongo 1 y en el precio 0.60, vereis que da 3 decimales y da numeros raros en subtotal en iva y en el total y si poneis 0.75 peor todavia, entonces lo que necesito es que si pongo decimales en el importe haga el subtotal con dos decimales maximo, el iva lo mismo con dos decimales, y el total lo mismo no que salgan esas cosas raras. A dia de hoy yo no lo consegui. En Resumen:

Subtotal= suma de todos los P's - el iva(solo dos decimales)
IVA= suma de todos los precios * 0.16 (solo dos decimales)
Total= suma de todos los precios(solo dos decimales)

os dejo aqui escrito el codigo xk no me deja ponerlo aqui os dejo una direccion para que lo cojais a ver

rcasturias.com/codigo.txt

Me gustaria que lo revisarais y me ayudeis por favor, os lo agradezco muchisimo.
  #2 (permalink)  
Antiguo 28/05/2007, 20:25
 
Fecha de Ingreso: abril-2003
Mensajes: 201
Antigüedad: 21 años
Puntos: 0
Re: Problema con formulario y decimales.

Hola, a mi sirvió muxisimo este ejemplo:
http://www.mis-algoritmos.com/ejempl...pt.70.run.html

Salu2
  #3 (permalink)  
Antiguo 29/05/2007, 01:52
 
Fecha de Ingreso: mayo-2007
Mensajes: 21
Antigüedad: 17 años
Puntos: 0
Re: Problema con formulario y decimales.

He mirado el codigo y lo primero que te sugiero es que utilizes el "document.getElementById('pepe').value" en vez de "document.pepe.value", por cierto, se deberia de introducir en cada objeto el id.ej:
Código:
 <div name='pepe'> ---> <div name='pepe' id='pepe'>
para este ejemplo necesitas que VALOR sea numero, sino te dará error el .toFixed(2).

Código:
var VALOR=document.getElementById('CANTIDAD').value*document.getElementById('Precio').value;
if(isNaN(VALOR)){
	document.getElementById('TOTAL').value='err';
}else{
	document.getElementById('TOTAL').value=VALOR.toFixed(2);
}
Me he encontrado alguna vez que VALOR es numero pero lo coje como String y no como entero, unicamente lo que hago es VALOR=VALOR*1; y ya es entero.

un saludo
  #4 (permalink)  
Antiguo 30/05/2007, 05:25
 
Fecha de Ingreso: mayo-2007
Mensajes: 48
Antigüedad: 17 años
Puntos: 0
Re: Problema con formulario y decimales.

ya pude solucionarlo y lo que use fue esto os pongo la funcion java:
Código:
function sumacantidad()
{
var im1, im2, im3, im4, im5, im6, im7, suma;
var p1=0; 
var p2=0;
var p3=0;
var p4=0;
var p5=0;
var p6=0;
var p7=0;

    p1=document.form1.CA1.value*document.form1.IM1.value; 
	document.form1.P1.value=p1;
	p2=document.form1.CA2.value*document.form1.IM2.value;
	document.form1.P2.value=p2;
	p3=document.form1.CA3.value*document.form1.IM3.value;
	document.form1.P3.value=p3;
	p4=document.form1.CA4.value*document.form1.IM4.value;
	document.form1.P4.value=p4;
	p5=document.form1.CA5.value*document.form1.IM5.value;
	document.form1.P5.value=p5;
	p6=document.form1.CA6.value*document.form1.IM6.value;
	document.form1.P6.value=p6;
	p7=document.form1.CA7.value*document.form1.IM7.value;
	document.form1.P7.value=p7;


var iva

suma=p1+p2+p3+p4+p5+p6+p7;
iva=suma*0.16;
document.form1.SUBTOTAL.value=NumberFormat(suma-iva,'2', '.', ',');
document.form1.IVA.value=NumberFormat(suma*0.16,'2', '.', ',');
document.form1.TOTAL.value=NumberFormat(suma,'2', '.', ',');

}


//Funcion decimales y miles
function NumberFormat(num, numDec, decSep, thousandSep){ 
var arg; 
var Dec; 
Dec = Math.pow(10, numDec);  
if (typeof(num) == 'undefined') return;  
if (typeof(decSep) == 'undefined') decSep = ','; 
if (typeof(thousandSep) == 'undefined') thousandSep = '.'; 
if (thousandSep == '.') 
arg=/./g; 
else 
if (thousandSep == ',') arg=/,/g; 
if (typeof(arg) != 'undefined') num = num.toString().replace(arg,''); 
num = num.toString().replace(/,/g, '.');  
if (isNaN(num)) num = "0"; 
sign = (num == (num = Math.abs(num))); 
num = Math.floor(num * Dec + 0.50000000001); 
cents = num % Dec; 
num = Math.floor(num/Dec).toString();  
if (cents < (Dec / 10)) cents = "0" + cents;  
for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) 
num = num.substring(0, num.length - (4 * i + 3)) + thousandSep + num.substring(num.length - (4 * i + 3)); 
if (Dec == 1) 
return (((sin)? '': '-') + num); 
else 
return (((sign)? '': '-') + num + decSep + cents); g
}
Si alguien tiene duda puedo postear todo el codigo del forumlario para futuros problemas. Pero con el ejemplo que poneis tambien se puede solucionar muchisimas gracias una vez mas.
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 08:02.