Foros del Web » Programando para Internet » Javascript »

convertir valores

Estas en el tema de convertir valores en el foro de Javascript en Foros del Web. Aun no se mucho de este lenguage por eso me dirijo a Uds. Lo que quiero hacer es lo sighuinete: Tengo un <input type=text name=hs> ...
  #1 (permalink)  
Antiguo 30/04/2003, 08:40
Avatar de Juansan  
Fecha de Ingreso: abril-2001
Mensajes: 203
Antigüedad: 23 años
Puntos: 0
convertir valores

Aun no se mucho de este lenguage por eso me dirijo a Uds.
Lo que quiero hacer es lo sighuinete:

Tengo un <input type=text name=hs>
el usuario llena este con valores como estos:
10.10 o 15.36 o cualquier combinacion de dos enteros y dos decimales, estos ultimos como maximo 59.
La idea es la siguiente:
si el usuario ingresa un valor decimal entre 0 y 14, deberia quedar en el input, el valor entero.00 , ejemplo:
10.07 = 10.00
o
10.12 = 10.00
Ahora bien, si el usuario ingresa un valor decimal entre 15 y 29, deberia quedar en el input, el valor entero.25 , ejemplo:
14.17 = 14.25
o
14.28 = 14.25
Lo mismo para ingresos decimales entre 30 y 44 debiendo quedar .50 e igual a ingresos entre 45 y 59 debiendo quedar .75

Se habran dado cuenta que quiero pasar a fracciones de aq cuartos la hora como unidad.

Espero haberme explicado y espero respuesta.

Gracias a todos.
  #2 (permalink)  
Antiguo 30/04/2003, 09:51
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola Juansan:

Para pasar cadenas a números decimales existe el parseFloat, y al sobre el nº de decimales está toFixed...

Prueba esto, y dime si te sirve:

alert(parseFloat('123.12345').toFixed(2))

Saludos
  #3 (permalink)  
Antiguo 30/04/2003, 09:52
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Prueba esto:

Código PHP:
<html>
<
head>
    <
title>Untitled</title>
</
head>

<
body>


<
input type="text"
       
name="valor"
       
size="5"
       
maxlength="5" onBlur='if(isNaN(this.value)||this.value>99){this.value="";this.focus()}'>
<
input type="button"
       
value="pincha"
       
onclick="if(valor.value){a=Math.round(valor.value*4)/4;alert(a)}"
       
>   

</
body>
</
html
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #4 (permalink)  
Antiguo 30/04/2003, 09:54
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Hola Caricatos!!

Menudo encontronazo!!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 30/04/2003 a las 10:02
  #5 (permalink)  
Antiguo 30/04/2003, 10:00
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
KarlanKas:

Con lo activos que somos en estos foros y lo poco que chocamos...

He visto que me has superado en el nº de mensajes (hasta hace poco te llevaba bastante)

Un abrazo
  #6 (permalink)  
Antiguo 30/04/2003, 10:03
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Ah sí? mira que bien! la verdad esque no suelo visitar las estadísiticas más que para ver las páginas a las que se va desde este foro...

Pronto me superarás, ya sabes que mis participaciones son a borbotones
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #7 (permalink)  
Antiguo 30/04/2003, 10:16
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
KarlanKas:

Tengo que responderte para sumar uno a mi cuenta...

No es que lleve control sobre nadie (solo sobre los que me han querido abducir )

Saludos
  #8 (permalink)  
Antiguo 30/04/2003, 10:17
Avatar de Juansan  
Fecha de Ingreso: abril-2001
Mensajes: 203
Antigüedad: 23 años
Puntos: 0
Gracias pero me parece que no se entendio la pregunta.
Voy otra vez, ahora mas simple

si el valor decimal esta entre 0 y 14, el valor decimal debe ser 00
si el valor decimal esta entre 15 y 29, el valor decimal debe ser 25
si el valor decimal esta entre 30 y 44, el valor decimal debe ser 50
si el valor decimal esta entre 45 y 59, el valor decimal debe ser 75

Les recuerdo que el usuario ingresara valores como... 10.23 lo que deberia devolver, en el mismo input, 10.25

Gracias
  #9 (permalink)  
Antiguo 30/04/2003, 10:31
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Código PHP:
<html>
<
head>
    <
title>Untitled</title>
    <
script>
    function 
comprobar(){
    if(
valor.value){
    
decimal=(valor.value-parseInt(valor.value));
    
decimal=parseInt(Math.ceil(1000*decimal/6))/100;
    
todo=parseInt(valor.value)+decimal;
    
a=Math.floor(todo*4)/4;
    
alert(a)}
    }
    
</script>
</head>

<body>


<input type="text"
       name="valor"
       size="5"
       maxlength="5" onBlur='if(isNaN(this.value)||this.value>99){this.value="";this.focus()}'>
<input type="button"
       value="pincha"
       onclick="comprobar()"
       >   

</body>
</html> 
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #10 (permalink)  
Antiguo 30/04/2003, 10:34
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola otra vez:

a pelo voy a darte la respuesta:

Para reconocer los decimales de un número, se puede pasar a string, y con los decimales hacer el test:

Para convertir un numero real, a uno en punto flotante, te he respondido antes (creo que hay una rima sonante)

Para averiguar el rango de los decimales...
var decimales = parseInt(n.split(".")[1]);

n representa una cadena válida en punto flotante...
Al usar split, convertimos la cadena n en un array de elementos, que en su forma inicial, estaban separados por una coma... y de ese array seleccionamos el 2º elemento [1] (los arrays empiezan por el 0)

Si hemos usado el toFixed(2) ese valor estará entre "00" y "99"

ahora solo queda hacer comparaciones if...

Saludos
  #11 (permalink)  
Antiguo 30/04/2003, 10:47
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Creo que es más fácil, caricatos. No es hacerlo con ifs... simplemente quiere pasar un número de base 60 a uno base 100 y luego redondearlo a una cuarta. Creo que había una función para pasar entre bases. En cualquier caso yo he hecho por medio de operaciones matemáticas. Es más fácil y creo que infalible!

Un saludo
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #12 (permalink)  
Antiguo 30/04/2003, 10:56
Avatar de Juansan  
Fecha de Ingreso: abril-2001
Mensajes: 203
Antigüedad: 23 años
Puntos: 0
Bien Karl, lo tuyo casi funciona solo que mis valores decimales van de 0 a 60 (son minutos) y no de o a 100.

Te podes fijar??

Gracias a todos
  #13 (permalink)  
Antiguo 30/04/2003, 11:16
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola otra vez:

Para pasar 15 minutos a 25% hay que operar 15 / .6 y añadirle "%"

Una función que devuelva de un nº de 0 a 59, un valor entre 0 y 100 sería algo así:
function minutos(n) {
return parseInt(n / .6)
}

Luego habría que hacer comparaciones:

function cuartos(n) {
if (n < 16) return "00";
if (n < 51) return "25";
if (n < 76) return "50";
return "100";
}

Espero que sirva
  #14 (permalink)  
Antiguo 30/04/2003, 11:29
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61

Ya está!


Código PHP:
<html>
<
head>
    <
title>Untitled</title>
    <
script>
    function 
comprobar(){
    if(
valor.value){
    
decimal=valor.value-parseInt(valor.value);
    if (
decimal>0.59){valor.value="";return false}
    
decimal=parseInt(Math.ceil(1000*decimal/6))/100;
    
todo=parseInt(valor.value)+decimal;
    
a=Math.floor(todo*4)/4;
    
alert(a)}
    }
    
</script>
</head>

<body>


<input type="text"
       name="valor"
       size="5"
       maxlength="5" onBlur='if(isNaN(this.value)||this.value>99){this.value="";this.focus()}'>
<input type="button"
       value="pincha"
       onclick="comprobar()"
       >   

</body>
</html> 
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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 22:04.