Foros del Web » Programando para Internet » Javascript »

Pasar parametros a función

Estas en el tema de Pasar parametros a función en el foro de Javascript en Foros del Web. Hola, necesito pasar el contenido de un campo de texto a una funcion para que formatee el número y lo devuelva del modo 1.230. La ...
  #1 (permalink)  
Antiguo 18/07/2003, 04:56
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Pasar parametros a función

Hola, necesito pasar el contenido de un campo de texto a una funcion para que formatee el número y lo devuelva del modo 1.230. La función la tengo, la conseguí por aquí, pero no sé como pasarle el valor del campo de texto a la función.
Gracias de antemano por la ayuda.
  #2 (permalink)  
Antiguo 18/07/2003, 05:08
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Digo yo que si nos dices cuál es esa función podremos ayudarte...
  #3 (permalink)  
Antiguo 18/07/2003, 05:17
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Esta es la función que he encontrado. No sé que hago mal o que no hago pero no rula ni "pa trás"

function punto(nNmb){
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;
}
return sRes;
}
  #4 (permalink)  
Antiguo 18/07/2003, 05:32
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Prueba así


function punto(nNmb,donde){
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;
donde.value = sRes
}
alert(sRes) //<--- esto lo pongo para que compruebes el resultado. Sácalo cuando quieras
return sRes;
}
</script>

y a tu formulario

<form name="form1" method="post" action="loquesea" onsubmit="punto(this.textfield.value,this.textfield)">
<p>
<input type="text" name="textfield">
<input type="submit" name="Submit" value="Enviar">
</form>

donde textfield has de cambiarlo por el nombre del campo de texto que haya que formatear
  #5 (permalink)  
Antiguo 18/07/2003, 09:43
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Funciona, pero yo lo que quiero es ponerlo para que cuando se introduzca el número en el campo de texto el que lo meta no tenga que ir contando los número para ver que número ha metido, me entiendes? Es una cuestión de estética. Mira yo tenía esto:

<input name="txtimporte" type="text" id="txtimporte" value="0" dir="rtl" class="campo" onChange="punto(AQUI NO SE QUE PONER)">

Lo que quiero es al cambiar el texto sabes? A ver si puedes ayudarme.
Gracias y un saludo.
  #6 (permalink)  
Antiguo 18/07/2003, 09:48
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Cita:
yo lo que quiero es ponerlo para que cuando se introduzca el número en el campo de texto el que lo meta no tenga que ir contando los número para ver que número ha metido, me entiendes?
Nop

Que el que meta los números no tenga que contarlos para ver qué números ha metido?

De verdad... no lo pillo...
  #7 (permalink)  
Antiguo 18/07/2003, 09:52
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
O sea, un campo de texto, uno llega y pone 33000000, pues quiero que automáticamente aparezca en el campo de texto 33.000.000
Eso de contar los números es porque cuando tu pones el número y no se separan los decimales hay que contar para que se sepa que has puesto no?
Espero que haberme explicado mejor.
  #8 (permalink)  
Antiguo 18/07/2003, 10:03
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Ah, quieres que coloque los puntos según se escribe.

No creo que se pueda con este script...

Se mete una cantidad fija de cifras?
  #9 (permalink)  
Antiguo 18/07/2003, 10:05
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
No, se puede meter la cantidad que se quiera. A ver si puedes resolvermelo por favor, es muy importante para mí. Thx.
  #10 (permalink)  
Antiguo 18/07/2003, 17:03
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
ok, hice uno nuevo

No necesita ninguna configuración. Simplemente pones el script en head y al campo de texto le pones la llamada a la función

Código PHP:
<script language="JavaScript">
//Código para colocar 
//los indicadores de miles mientras se escribe
//script por tunait!
function puntitos(donde,caracter)
{
pat = /[*,+,(,),?,,$,[,],^]/
valor donde.value
largo 
valor.length
crtr 
true
if(isNaN(caracter) || pat.test(caracter) == true)
    {
    if (
pat.test(caracter)==true
        {
caracter "\\" caracter}
    
carcter = new RegExp(caracter,"g")
    
valor valor.replace(carcter,"")
    
donde.value valor
    crtr 
false
    
}
else
    {
    var 
nums = new Array()
    
cont 0
    
for(m=0;m<largo;m++)
        {
        if(
valor.charAt(m) == "." || valor.charAt(m) == " ")
            {continue;}
        else{
            
nums[cont] = valor.charAt(m)
            
cont++
            }
        
        }
    }


var 
cad1="",cad2="",tres=0
if(largo && crtr == true)
    {
    for (
k=nums.length-1;k>=0;k--)
        {
        
cad1 nums[k]
        
cad2 cad1 cad2
        tres
++
        if((
tres%3) == 0)
            {
            if(
k!=0){
                
cad2 "." cad2
                
}
            }
        }
     
donde.value cad2
    
}
}    
</script> 
Y luego al campo de texto le pones...


<input type="text" name="textfield" onkeyup="puntitos(this,this.value.charAt(this.valu e.length-1))">

A ver que tal

Última edición por tunait; 18/07/2003 a las 17:47
  #11 (permalink)  
Antiguo 18/07/2003, 17:53
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
El pinche foro sigue quitando las \

Bueno, si copias el código tal como está puede o no funcionar correcto o directamente no funcionar.

Te dejo el ejemplo aquí.

Copia el código del código fuente de la página
  #12 (permalink)  
Antiguo 21/07/2003, 05:59
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Muchas, pero que muchas gracias.
Si te digo que me has salvado la vida no estoy exagerando.
Mil scripts de gracias.
  #13 (permalink)  
Antiguo 21/07/2003, 05:59
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Muchas, pero que muchas gracias.
Si te digo que me has salvado la vida no estoy exagerando.
Mil scripts de gracias.
Una cosa nada más, a ese campo de texto no se le pueden poner decimales, y podría ser interesante y necesario que los admitiera, como lo hago?
  #14 (permalink)  
Antiguo 21/07/2003, 06:07
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Buenas

huy, eso implica (probablemente) rediseñar el script.

Ahora mismo ando con el tiempo para responder cosas sencillitas que no me impliquen horas de pelear con códigos, pero en cuanto tenga un rato me pongo en ello
  #15 (permalink)  
Antiguo 21/07/2003, 09:38
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Este apartado me está matando, ahora no puedo operar con el número y lo paso a entero o float pero como tiene el punto, solo coge hasta el el punto. Por ejemplo, escribo 30.000 y como es texto, pues uso parseInt para pasarlo a entero, pero como tiene un "." me convierte el valor a 30.
Dime una solución "Diosa del JavaScript"
  #16 (permalink)  
Antiguo 22/07/2003, 06:29
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Cita:
Mensaje Original por knarfy

Dime una solución "Diosa del JavaScript"
Jé, pelota

A ver, dos cosas:

¿viste esta faq??

http://www.forosdelweb.com/showthrea...554#post265554

la otra....

antes de enredarme a teclear... dame una explicación más amplia de lo que hace tu formulario y qué has de hacer luego con ese o esos campos.

Es que no es lo mismo programar un script teniendo en cuenta un aspecto que teniendo en cuenta varios (yo me entiendo)

  #17 (permalink)  
Antiguo 22/07/2003, 08:40
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Cita:
Je, pelota (tunait)
¿Yo, pelota?Que va. jejejeje

Bueno en serio, el problema de ese campo era que luego operaba con él y como al ponerle decimales lo trataba como texto pues no podía operar con él.
Me pasaba lo siguiente, cuando introducía 1.000.000 y luego lo pasaba a número, me daba de resultado 1.
Para solucionarlo simplemente compruebo la longitud del texto y le añado a esa cadena "E3" y luego con parseFloat lo convierto. Si sobrepasa 999.999 no deja hacer nada. De momento funciona (a no ser que me pidan que necesitan más números), pero en fin, funciona, queda bonito y se puede trabajar con ello.

Mi formulario calcula la cuota mensual de la petición de un crédito, cuando esté acabada te pongo una dirección para que eches un vistazo a mi trabajo (con tu inestimable ayuda, claro).

Vale, vale, soy un poco pelota.

Gracias tunait por tu ayuda y tu tiempo.
  #18 (permalink)  
Antiguo 22/07/2003, 13:03
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
jejeje de nadas


Cita:
cuando introducía 1.000.000 y luego lo pasaba a número, me daba de resultado 1.
Es que estos bichos piensan en inglés o 'mericano, osea, nosotros usamos comas para los decimales, los 'mericanos usan puntos. Y los separadores de miles para ellos son comas, pa nosotros puntos.

El tema de que coloque los separadores de miles mientras se escribe no es más que una pijada para la comodidad del usuario, pero eso no quiere decir que luego sea práctico para manejar esa información.

De haberlo sabido en el script (que lo puedo hacer si quieres, esto no es complicado) podríamos haber guardado el número sin los puntos en campo de tipo hidden (oculto) y usar el valor del hidden para operar con los números.


Entonces al final necesitas lo de los decimales o no??
  #19 (permalink)  
Antiguo 23/07/2003, 02:41
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Cita:
Por tunait:
Entonces al final necesitas lo de los decimales o no??
Pues el viernes te lo digo, cuando vea a mi cliente y me diga que si los necesita o no. No vayas haciendo nada porque si luego no los necesita...habrás perdido tu precioso tiempo.

Bueno, pues lo dicho, el viernes te digo si los necesito o no.
  #20 (permalink)  
Antiguo 23/07/2003, 02:53
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
ok

Aparte de lo de los decimales has considerado esto?
Cita:
De haberlo sabido en el script (que lo puedo hacer si quieres, esto no es complicado) podríamos haber guardado el número sin los puntos en campo de tipo hidden (oculto) y usar el valor del hidden para operar con los números.
  #21 (permalink)  
Antiguo 24/07/2003, 14:47
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Bueno, pues ya sé los resultados. A ver, en el campo númérico necesito decimales y que no haya límite de cantidad. A ver como podemos solucionarlo precios@.

Lo del campo oculto lo he considerado y no es ninguna mala idea, intentaré hacer algo a ver que hago. A ver si entre los dos podemos hacerlo. Ok?

Gracias.
  #22 (permalink)  
Antiguo 28/07/2003, 06:07
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Cita:
en el campo númérico necesito decimales y que no haya límite de cantidad
Que no haya límite de cantidad en la cantidad de decimales o en el largo total de la cifra?
  #23 (permalink)  
Antiguo 28/07/2003, 08:36
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Que no haya límite en el número entero, los decimales máximo 2.
¿Te acuerdas del problema de los puntos?
Cita:
Me pasaba lo siguiente, cuando introducía 1.000.000 y luego lo pasaba a número, me daba de resultado 1.
Pues lo solucioné con split(".") y join("")

Solo me faltan los decimales.
  #24 (permalink)  
Antiguo 28/07/2003, 08:39
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
cojonudo, entonces te puede vale el que hice ayer.

Echa un ojo a esto
  #25 (permalink)  
Antiguo 28/07/2003, 08:49
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Me vale, pero no necesito poner radiobuttons, quiero que tenga dos decimales siempre, como hago eso?
  #26 (permalink)  
Antiguo 28/07/2003, 09:07
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 9 meses
Puntos: 0
Bueno, pues ya lo he hecho. A ver si ahora puedo hacer todo lo que me propongo con ese número.

Gracias por tu ayuda, sin tí mi proyecto no habría salido adelante.

Mil thx
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 00:41.