Foros del Web » Programando para Internet » Javascript »

Eurocalculadora

Estas en el tema de Eurocalculadora en el foro de Javascript en Foros del Web. Tengo un problema a ver si alguien me puede ayudar, tengo el codigo de una eurocalculadora, pero querria que hiciese una cosa tanto al introducir ...
  #1 (permalink)  
Antiguo 17/11/2004, 12:14
 
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 5 meses
Puntos: 0
Eurocalculadora

Tengo un problema a ver si alguien me puede ayudar, tengo el codigo de una eurocalculadora, pero querria que hiciese una cosa tanto al introducir como al dar el resultado quiero que, escriba el separador de miles, el ".", es decir, 1.000 en vez de 1000 que es lo que hace ahora pero no se como, pq yo de JavaScript aun ando muy flojo, el codigo seria el siguiente, que tendria que modificar para que me hiciese lo deseado:

Código:
<html>
<head>
<title> New Document </title>
<script language="JavaScript">
<!--
//***************  http://www.ctv.es/USERS/hidromed/eurocalculadora.htm
var euroValue=166.386;
//***************

function parse2Euros(f) {
	if(!isNaN(parseFloat(f.intro.value))) {
		redondeo=parseFloat(f.intro.value)/euroValue;
		redondeoMil=""+redondeo*1000;
		redondeoMilF=0.0;

		if(redondeoMil.indexOf(".")>0) {
			redondeoMilF=parseFloat(redondeoMil.substring(0,redondeoMil.indexOf(".")));
		}
		else {
			redondeoMilF=parseFloat(redondeoMil);
		}
               
		ajuste=Math.round(redondeoMilF/10)/100;
		f.resultado.value=ajuste+" Euros";
		i=f.resultado.value.indexOf(".");
		s=f.resultado.value;
		if(i>0)
			f.resultado.value=f.resultado.value.substring(0,i)+","+s.substring(i+1,f.resultado.value.length);
	}
}


function parse2Pesetas(f) {
	i=f.intro.value.indexOf(",");
	if(i>0) {
		s=f.intro.value;
		f.intro.value=f.intro.value.substring(0,i)+"."+s.substring(i+1,f.intro.value.length);
	}

	if(!isNaN(parseFloat(f.intro.value))) {
		redondeo=parseFloat(f.intro.value)*euroValue;
		ajuste=Math.round(redondeo);
		f.resultado.value=ajuste+" Pts";
	}
}

//-->
</script>

</head>

<body bgcolor="#FFFFFF" background="NG_MarcaAgua.gif">
<div id="Layer1" style="position:absolute; left:12px; top:84px; width:205px; height:27px; z-index:1"> 
 <form name="form1" method= "post" action="calcula.php">
  <input name="button" type="button" onClick="parse2Euros(form1)" value="A Euros">
  <input name="button2" type="button" onClick="parse2Pesetas(form1)" value="A Pesetas">
</div>
<div id="Layer2" style="position:absolute; left:186px; top:86px; width:58px; height:21px; z-index:2"> 
  <input type="TEXT" name="resultado" size="25" maxlength="40">
</div>
  <p>Introduce la cantidad a transformar: 
    <input type="text" name="intro" size="16" maxlength="16">
  </p>
  <p>&nbsp; </p>
</form>
</body>
</html>
Muchas gracias y saludos!!
  #2 (permalink)  
Antiguo 17/11/2004, 14:43
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola, ayabass
La función es complicada. Por ahora, la parte de pesetas, que se puede hacer así:
Código:
function parse2Pesetas(f) {
	i=f.intro.value.indexOf(",");
	if(i>0) {
		s=f.intro.value;
		f.intro.value=f.intro.value.substring(0,i)+"."+s.substring(i+1,f.intro.value.length);
	}

	if(!isNaN(parseFloat(f.intro.value))) {
		redondeo=parseFloat(f.intro.value)*euroValue;
		ajuste=Math.round(redondeo);
		// ajuste es número entero, no es necesario cuidarse de los decimales
		ajuste=ajuste.toString();
		var k=ajuste.length
		var ajuste2=''
		if (k>9) { ajuste2+=ajuste.substring(0,k-9)+'.' }
		if (k>6) { ajuste2+=ajuste.substring(k-9,k-6)+'.' }
		if (k>3) { ajuste2+=ajuste.substring(k-6,k-3)+'.' }
		ajuste2+=ajuste.substr(k-3)
		f.resultado.value=ajuste2+" Pts";
	}
}
Seguro que hay una forma más elegante de hacerlo, pero así funciona.
__________________
Angel :cool:
  #3 (permalink)  
Antiguo 17/11/2004, 15:10
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Esto para los euros:
Código:
function parse2Euros(f) {
	if(!isNaN(parseFloat(f.intro.value))) {
		redondeo=parseFloat(f.intro.value)/euroValue;
		redondeoMil=""+redondeo*1000;
		redondeoMilF=0.0;

		if(redondeoMil.indexOf(".")>0) {
			redondeoMilF=parseFloat(redondeoMil.substring(0,redondeoMil.indexOf(".")));
		}
		else {
			redondeoMilF=parseFloat(redondeoMil);
		}
               
		ajuste=Math.round(redondeoMilF/10)/100;
		ajuste=ajuste.toString()
		i=ajuste.indexOf(".");
		var ajuste1 = '';
		if (i!=-1) {
			ajuste1 = ','+ajuste.substr(i+1) // tras coma
			ajuste=ajuste.substring(0,i) //pre-coma
		}
		var k=ajuste.length
		var ajuste2=''
		if (k>9) { ajuste2+=ajuste.substring(0,k-9)+'.' }
		if (k>6) { ajuste2+=ajuste.substring(k-9,k-6)+'.' }
		if (k>3) { ajuste2+=ajuste.substring(k-6,k-3)+'.' }
		ajuste2+=ajuste.substr(k-3)
		f.resultado.value=ajuste2+ajuste1+" Euros";
	}

}
Espero que funcione, pues no consigo entender toda la función.
__________________
Angel :cool:
  #4 (permalink)  
Antiguo 18/11/2004, 02:25
 
Fecha de Ingreso: noviembre-2004
Mensajes: 133
Antigüedad: 19 años, 5 meses
Puntos: 0
Asi a bote pronto no funciona ninguno voy ver si encunetro el fallo, pero MUCHAS GRACIAS!! Un saludo
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 15:41.