Foros del Web » Programando para Internet » Javascript »

funcion de formato de decimal de tunait !!

Estas en el tema de funcion de formato de decimal de tunait !! en el foro de Javascript en Foros del Web. que tal !! aqui pidiendoles ayuda para modificar una funcion muy buena y que se me acomoda a lo que necesito, solo que tiene un ...
  #1 (permalink)  
Antiguo 30/01/2006, 10:34
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Sonrisa funcion de formato de decimal de tunait !!

que tal !!

aqui pidiendoles ayuda para modificar una funcion muy buena y que se me acomoda a lo que necesito, solo que tiene un detalle, cuando separa los decimales solo usa puntos, quiesiera que cuando sean miles ponga las comas, como el de las
faq 45

pero utilizo mas este de tunait que se acocmoda a mis necesidades.
Código PHP:
<script>
function 
punto(){
nNmb=document.all["textfield"].value;
var 
sRes "";
var 
j,i;
for (
i=nNmb.length-1,j=0;i>=0;i--,j++){ 
sRes nNmb.charAt(i) + ((j>0) && (j%3==0)? ".""") + sRes;
document.all["textfield"].value sRes
}

}
</script>

y a tu formulario

<form name="form1" method="post" action="prueba1.php">
<p>
<input type="text" name="textfield">
<input type="button" name="Submit" value="Enviar" onClick="punto()"> 
este es el link original de donde tome el script de tunait

AQUI
  #2 (permalink)  
Antiguo 30/01/2006, 10:52
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola The_omars

He modificado un poco el código para que salgan comas en lugar de puntos. De paso lo he modificado un poco más para que también funcione en Firefox:
Código PHP:
function punto(){
  
nNmb=document.forms[0]["textfield"].value;
  var 
sRes "";
  var 
j,i;
  for (
i=nNmb.length-1,j=0;i>=0;i--,j++){ 
    
sRes nNmb.charAt(i) + ((j>0) && (j%3==0)? ",""") + sRes;
    
document.forms[0]["textfield"].value sRes
  
}

Saludos,
  #3 (permalink)  
Antiguo 30/01/2006, 11:06
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
hola JavierB gracias por contestar.

a lo mejor no me di entender,

el resultado debe separarme con puntos y comas por ejemplo.

25,000.00

2,000.00

2,300,000.00

perdon por no explicarlo bien y gracias por contestar.
  #4 (permalink)  
Antiguo 30/01/2006, 11:15
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

¿Cual es el formato original? ¿Siempre va a tener 2 decimales y siempre son ceros? Si pones un ejemplo (o dos) será más fácil.

Saludos,
  #5 (permalink)  
Antiguo 30/01/2006, 11:39
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
hola de nuevo !!

lo que intento hacer es que en dos text ingresen numeros con esta funcion de la faq 45

el formato que arroja es por ejemplo:
si ingreso 2300
la funcion de la faq 45 con un onKeypress lo pone asi:
2,300.00

pero para sumarlo les quito el punto y la coma con esta funcion:

Código PHP:
function sumar(){ 
  
t1=document.all["test1"].value
  
t2=document.all["test2"].value

for (
z=1;z<=10;z++){
t1 t1.replace('.','');
t1 t1.replace(',','');
}
for (
z=1;z<=10;z++){
t2 t2.replace('.','');
t2 t2.replace(',','');


}

suma=parseFloat(t1)+parseFloat(t2);

  
document.all["res"].value=suma;  
 } 
lo que me arroja de resultado de suma es lo siguiente:

ejemplo:

ingresa el numero el usuario la funcion de la faq 45 lo convierte en el siguiente formato:

2,500.00
+
2,350.00

para sumralos les quito el punto y la coma y el resultado me arroja lo siguiente: 485000

ahora ese resultado lo quiero pasar a un text con el formato original de la faq 45 que seria este:

4,580.00

  #6 (permalink)  
Antiguo 31/01/2006, 13:56
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
NInguna idea?
  #7 (permalink)  
Antiguo 31/01/2006, 16:01
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Cita:
Iniciado por JavierB
He modificado un poco el código para que salgan comas en lugar de puntos. De paso lo he modificado un poco más para que también funcione en Firefox:
psooye que mi código furula perfectamente en el firefóss

Hola The_omars

Has mirado este?
http://javascript.tunait.com/javascr....asp?s=puntos2

sólo habría que cambiar el punto por la coma y la coma por el punto y debería funcionar como quieres
  #8 (permalink)  
Antiguo 01/02/2006, 08:53
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Hola tunait gracias por contestar pues fijate que lo necesito sin los radio button, ya que sea por defoult 2 decimales pero la verdad ya le intente y no me lo acomodo el codigo. . me podrian orientar por favor ?????
  #9 (permalink)  
Antiguo 01/02/2006, 09:31
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Cita:
Iniciado por tunait
psooye que mi código furula perfectamente en el firefóss
Pozamí me daba error en algunas líneas
Código:
t1=document.all["test1"].value; 
t2=document.all["test2"].value;
Saludos,
  #10 (permalink)  
Antiguo 01/02/2006, 09:38
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Cita:
Iniciado por JavierB
Pozamí me daba error en algunas líneas
Código:
t1=document.all["test1"].value; 
t2=document.all["test2"].value;
Saludos,
Pero eso no ézmío (nunca he usado el all). Lo mio está más abajo en ese thread


Cita:
Iniciado por The_omars
Hola tunait gracias por contestar pues fijate que lo necesito sin los radio button, ya que sea por defoult 2 decimales pero la verdad ya le intente y no me lo acomodo el codigo. . me podrian orientar por favor ?????
Es que los radio los puse sólo para poder probar con los distintos decimales pero obviamente debe ir sin los radio.

Deja que averigue cómo va el asunto (que no me acuerdo) y te cuento
  #11 (permalink)  
Antiguo 01/02/2006, 10:43
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Hola de nuevo

nada como releer las cosas por el día en vez de a última hora de la noche

The_Omars, no te hace falta mi script de los puntos, te sirve la que estás usando quitándole un detalle, mira la función que estás usando

Código:
t1=document.all["test1"].value;  
  t2=document.all["test2"].value;  

for (z=1;z<=10;z++){ 
t1 = t1.replace('.',''); 
t1 = t1.replace(',',''); 
} 
for (z=1;z<=10;z++){ 
t2 = t2.replace('.',''); 
t2 = t2.replace(',',''); 


} 

suma=parseFloat(t1)+parseFloat(t2); 

  document.all["res"].value=suma;   
 }
En las dos primeras líneas que te marco en negritas le estás quitando los puntos (el separador de decimales) por lo tanto te lo está convirtiendo en un entero de 2 cifras más (en tu ejemplo, 250000 y 23500) por eso te devuelve un valor tan alto.

Basta con que sólo le quites las comas y los sumes usando el parseFloat (te hará la suma respetando los dos decimales)

Prueba a quitarle esas dos primeras líneas donde quitas los puntos y dime qué te devuelve.

Cambia también este document.all["res"].value=suma; por un document.forms[0].res.value=suma;

Respecto al códgo que estamos tratando, comentar que no es mío. El código lo modifiqué a partir de otro en el post aquel y luego hice otro desde cero que dejé más abajo (insisto, nunca he usado el document.all )

Ya me contarás
  #12 (permalink)  
Antiguo 01/02/2006, 11:29
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
que tal tunait , cierto y lo digo, yo modifique eso del document.all ese no es original de tunait pero lo demas es pura inteligencia de tunait( por eso quise hacer merito a eso)

ahora esa recomendacion que me hiciste estuvo genial , me suma prefectamente , pero sigo con un detalle

al momento que salen miles no me lo separa por ejemplo:

2,500.00
+

2,300.00

me da como resultado:

4800.00 // uso toFixed

Aqui sigue faltando que me separe con una coma 4,800.00

aqui les dejo la liga AQUI
  #13 (permalink)  
Antiguo 01/02/2006, 13:55
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Pues ala, a ver si te va bien con estos cambios

Código:
function sumar(){ 
  t1=document.forms[0].test1.value; 
  t2=document.forms[0].test2.value; 

for (z=1;z<=10;z++){
//t1 = t1.replace('.','');
t1 = t1.replace(',','');
}
for (z=1;z<=10;z++){
//t2 = t2.replace('.','');
t2 = t2.replace(',','');
}
suma=parseFloat(t1)+parseFloat(t2);
resultado = suma.toString().split(".")
var cad1="",cad2="",tres=0
for (m=resultado[0].length-1;m>=0;m--){
		cad1 = resultado[0].charAt(m)
		cad2 = cad1 + cad2
		tres++
		if((tres%3) == 0){
			if(m!=0){
				cad2 = "," + cad2
				}
			}
		}
	if(resultado.length > 1){
		deci = "." + resultado[1]
	}
	else{
		deci = ".00"  
	}
document.forma.res.value= cad2 + deci;
}
Yá me contarás

Un saludo
  #14 (permalink)  
Antiguo 01/02/2006, 14:06
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
TUNAIT !!!

eres mi idolaa !!

eso es todo funciona perfectamente. SCRIPT

personas como Tunait hacen de este foro uno de los mas importantes en america latina!!!!



propongo este script para FAQ.

gracias tunait, javierb por su ayuda.
  #15 (permalink)  
Antiguo 01/02/2006, 14:22
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
jajaja ... y lo que gusta que me tiren flores

Cita:
TUNAIT ES MI IDOLA !!!!
qué bárbaro, así da gusto

Pues me alegro mucho que lo hayas podido solucionar, The_omars

Un saludillo
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 20:10.