Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Poner 2 decimales automaticamente

Estas en el tema de Poner 2 decimales automaticamente en el foro de Javascript en Foros del Web. Buen dia Tengo el siguiente codigo que pone las decimales en los campos que vas llenando, lo que necesito es que en el total me ...
  #1 (permalink)  
Antiguo 24/09/2013, 11:37
 
Fecha de Ingreso: abril-2010
Mensajes: 40
Antigüedad: 14 años, 6 meses
Puntos: 0
Poner 2 decimales automaticamente

Buen dia

Tengo el siguiente codigo que pone las decimales en los campos que vas llenando, lo que necesito es que en el total me ponga las decimales automaticamente

ya probe con varios eventos de javascript pero ninguno

hay alguna forma de que se pongan en automatico las decimales en el campo Total

Código HTML:
 <script language="JavaScript">
   function redondea(sVal, nDec){
    var n = parseFloat(sVal);
    var s = "0.00";
    if (!isNaN(n)){
     n = Math.round(n * Math.pow(10, nDec)) / Math.pow(10, nDec);
     s = String(n);
     s += (s.indexOf(".") == -1? ".": "") + String(Math.pow(10, nDec)).substr(1);
     s = s.substr(0, s.indexOf(".") + nDec + 1);
    }
    return s;
   }

   function ponDecimales(nDec){
    document.form1.t1.value = redondea(document.form1.t1.value, nDec);
    document.form1.t2.value = redondea(document.form1.t2.value, nDec);
	document.form1.t3.value = redondea(document.form1.t3.value, nDec);
	document.form1.t4.value = redondea(document.form1.t4.value, nDec);
	document.form1.resultado.value = redondea(document.form1.resultado.value, nDec);

   }
  </script>
  
<script language="javascript">  
function calcula(operacion){  
    var t1 = document.form1.t1.value; 
    var t2 = document.form1.t2.value; 
    var t3 = document.form1.t3.value; 
	var t4 = document.form1.t4.value; 
    var result = eval(t1 + operacion + t2 + operacion + t3 + operacion + t4); 
    document.form1.resultado.value = result ; 
}  
</script> 



<form name="form1">  
  <p>
  <input type="text" name="t1" onChange="ponDecimales(2);calcula('+')" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t1" >
  <br>
  <input type="text" name="t2" onChange="ponDecimales(2);calcula('+')" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t2" >
  <br>
  <input type="text" name="t3" onChange="ponDecimales(2);calcula('+')" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t3" >
  <br />
  <input type="text" name="t4" onChange="ponDecimales(2);calcula('+')" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t4" >
  </p>
  <p><br>   
    Total: 
    <input type="Text" name="resultado" size="12" onload="ponDecimales(2)" readonly>
  </p>
  
</form> 
De antenamo muchas gracias espero y puedan ayudarme

Saludos.
  #2 (permalink)  
Antiguo 24/09/2013, 12:59
Avatar de dAvidcA  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/dev/
Mensajes: 73
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: Poner 2 decimales automaticamente

Hola, prueba este código, cambié algunas cosas para optimizarlo.

Código HTML:
<script type="text/javascript">
function redondea(sVal, nDec){
	var n = parseFloat(sVal);
	var s = "0.00";
	if (!isNaN(n)){
		n = Math.round(n * Math.pow(10, nDec)) / Math.pow(10, nDec);
		s = String(n);
		s += (s.indexOf(".") == -1? ".": "") + String(Math.pow(10, nDec)).substr(1);
		s = s.substr(0, s.indexOf(".") + nDec + 1);
	}
	return s;
}
function calcula(operacion, nDec){  
	var t1 = document.form1.t1.value = redondea(document.form1.t1.value,nDec);
	var t2 = document.form1.t2.value = redondea(document.form1.t2.value,nDec); 
	var t3 = document.form1.t3.value = redondea(document.form1.t3.value,nDec); 
	var t4 = document.form1.t4.value = redondea(document.form1.t4.value,nDec); 
	var result = eval(t1 + operacion + t2 + operacion + t3 + operacion + t4); 
	document.form1.resultado.value = redondea(result,nDec);
}  
</script>

<form name="form1">  
  <p>
	<input type="text" name="t1" onChange="calcula('+',2)" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t1" >
	<br>
	<input type="text" name="t2" onChange="calcula('+',2)" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t2" >
	<br>
	<input type="text" name="t3" onChange="calcula('+',2)" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t3" >
	<br />
	<input type="text" name="t4" onChange="calcula('+',2)" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t4" >
	</p>
	<p><br>   
	Total: 
	<input type="Text" name="resultado" size="12" readonly>
  </p>  
</form> 
La función calcula recibe un atributo de más que va a ser el número de decimales para todos los campos.

Espero te sirva, alguna duda vuelves a comentar.

Saludos.
  #3 (permalink)  
Antiguo 24/09/2013, 13:30
 
Fecha de Ingreso: abril-2010
Mensajes: 40
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Poner 2 decimales automaticamente

Excelente dAvidcA

Justo lo que necesitaba muchas gracias por tu respuesta

me fue de gran ayuda!!!

saludos.

Etiquetas: décimales, textbox
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 16:50.