Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/09/2013, 12:59
Avatar de dAvidcA
dAvidcA
 
Fecha de Ingreso: septiembre-2009
Ubicación: /home/dev/
Mensajes: 73
Antigüedad: 15 años, 3 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.