Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/05/2012, 11:28
Johersa
 
Fecha de Ingreso: mayo-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Problema sumando campos con javascript

Saludos foristas, a ver si algún compañero podra darme luces sobre el tema:
Necesito sumar los posibles aportes realizados al momento de pagar una deuda monetaria tomando en cuenta que pueden ser pagos parciales con efectivo, cheque , tarjeta de débito y tarjeta de crédito.

Hice una función en javascript la cual llamo con los eventos onblur y/o onchange. Hasta acá todo bien.

El problema se me presenta cuando salto entre los diferentes <input type="text" ...>, ya que el total no se me recalcula como debiera. y si lo hago con el uso del evento onclick me presenta una cantidad de decimales que no deseo.

Funcion:
function valida_moneda(entrada, tipopago){
if (document.getElementById("t_ef").value) document.getElementById("t_ef").value = parseFloat(document.getElementById("t_ef").value) ; else document.getElementById("t_ef").value = 0;
if (document.getElementById("t_deb").value) document.getElementById("t_deb").value = parseFloat(document.getElementById("t_deb").value) ; else document.getElementById("t_deb").value = 0;
if (document.getElementById("t_cre").value) document.getElementById("t_cre").value = parseFloat(document.getElementById("t_cre").value) ; else document.getElementById("t_cre").value = 0;
if (document.getElementById("t_che").value) document.getElementById("t_che").value = parseFloat(document.getElementById("t_che").value) ; else document.getElementById("t_che").value = 0;
va1 = parseFloat(document.getElementById("t_ef").value);
va2 = parseFloat(document.getElementById("t_deb").value) ;
ve3 = parseFloat(document.getElementById("t_cre").value) ;
ve4 = parseFloat(document.getElementById("t_che").value) ;
document.getElementById("t_tpgo2").value = va2 + va1 + ve3 + ve4;
document.getElementById("t_tpgo2").value = document.getElementById("t_tpgo2").toFixed(2);
return;
}


llamadas desde los inputs:
<input type="text" name="t_ef" id="t_ef" size="16" maxlength="15" value="<?php echo (isset($_REQUEST['t_ef'])) ? $_REQUEST['t_ef'] : ''; ?>" title="Monto Efectivo." tabindex="5" onfocus="valida_moneda(this.value, 1);" onchange="valida_moneda(this.value, 1);" /> Pesos
<input type="text" name="t_deb" id="t_deb" size="15" maxlength="15" value="<?php echo (isset($_REQUEST['t_deb'])) ? $_REQUEST['t_deb'] : ''; ?>" title="Monto tarjeta de d&eacute;bito." tabindex="7" onfocus="valida_moneda(this.value, 2);" onchange="valida_moneda(this.value, 2);" > Pesos
<input type="text" name="t_cre" id="t_cre" size="15" maxlength="15" value="<?php echo (isset($_REQUEST['t_cre'])) ? $_REQUEST['t_cre'] : ''; ?>" title="Monto tarjeta de cr&eacute;dito." tabindex="9" onfocus="valida_moneda(this.value, 3);" onchange="valida_moneda(this.value, 3);"> Pesos
<input type="text" name="t_che" id="t_che" size="15" maxlength="15" value="<?php echo (isset($_REQUEST['t_che'])) ? $_REQUEST['t_che'] : ''; ?>" title="Monto cheque." onfocus="valida_moneda(this.value, 4);" onchange="valida_moneda(this.value, 4);" tabindex="10"> Pesos


Alguna idea de que es lo que estoy haciendo mal?

Gracias por su tiempo.