Foros del Web » Programando para Internet » Javascript »

Poner : en un campo de texto para no tener que escribirlos siempre

Estas en el tema de Poner : en un campo de texto para no tener que escribirlos siempre en el foro de Javascript en Foros del Web. Hola forer@s! Mi problema es que quiero poner : en un campo de texto en el que se debe introducir una hora de la forma ...
  #1 (permalink)  
Antiguo 29/03/2005, 09:17
 
Fecha de Ingreso: enero-2005
Mensajes: 116
Antigüedad: 19 años, 2 meses
Puntos: 0
Pregunta Poner : en un campo de texto para no tener que escribirlos siempre

Hola forer@s!
Mi problema es que quiero poner : en un campo de texto en el que se debe introducir una hora de la forma 17:30, para que el usuario no tenga que escribirlos cada vez que rellena el campo.
Me refiero a que los : estean en el centro del campo de texto, y que no se puedan borrar. Y que se puedan escribir 2 caracteres antes y 2 despues.
Agradecería cualquier aportacion.
Un saludo.
  #2 (permalink)  
Antiguo 29/03/2005, 10:50
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
para cargar la hora fijate en el FAQ de javascript...

Para que no lo modifiquen usa en el input readonly="readonly"

o readonly="yes"

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 29/03/2005, 12:48
 
Fecha de Ingreso: enero-2005
Mensajes: 116
Antigüedad: 19 años, 2 meses
Puntos: 0
Pero es que mi idea era que el usuario escribiera la hora, y que los 2 puntos fueran los que no se podían modificar.
Ej: Para introducir la hora 17:30, que el usuario solo tenga que teclear 1730
Y si pongo todo el campo readonly, el usuario no puede introducir la hora.
Yo creo que hacer se puede hacer, porque a mi me suena de verlos en algún sitio,aunque no recuerdo donde.
Espero que alguien sepa decirme que debo hacer.
Un saludo
  #4 (permalink)  
Antiguo 29/03/2005, 16:29
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
function mira(esto){
var e=esto.value
var l=e.length
if(l==3){e=(e.substring(0,2)+":"+e.charAt(2))}
if(l>4)e=e.substring(0,5)
esto.value=e
}
<input name="hora" type="text" value="" size="4" onkeyup="mira(this)" />
Resulta que esta funcion tiene un fallo, que no se como solucionar., y es que, al borrar, con la tecla retroceso., cuando llega a ":" no sigue borrando a menos que se deje la tecla pulsada.

Espero que te sirva ,y que alguien de con el fallo.

Saludos.
  #5 (permalink)  
Antiguo 29/03/2005, 18:23
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 21 años, 11 meses
Puntos: 7
No seria mejor que uses dos selectores?

Algo asi...
<select name='hora'>
<option value='0'>00</option>
...
<option value='23'>23</option>
</select>:<select name='minuto'>
<option value='0'>00</option>
...
<option value='59'>59</option>
</select>
__________________
No tengo firma ahora... :(
  #6 (permalink)  
Antiguo 30/03/2005, 00:32
 
Fecha de Ingreso: diciembre-2004
Mensajes: 44
Antigüedad: 19 años, 4 meses
Puntos: 0
Te paso este código

Si usas Xsl y XML utiliza esto.

En la parte de pantalla:
<font face="verdana" size="1" color="#00008B">
<input type="text" name="txt_hora_desde" size="2" style="width:20; font-family: Arial; font-size: 8pt"/>
:
<input type="text" name="txt_minuto_desde" size="2" style="width:20; font-family: Arial; font-size: 8pt"/>
</font>

Luego en el momento de enviar los datos del formulario valida que la hora y los minutos son correctos en un javascript, que contendra lo siguiente
// Validar si hora_desde está comprendida entre las 00 y las 23
if (hora_desde&gt;=0 &amp;&amp; hora_desde&lt;=23)
{}
else
{alert("La hora desde debe estar comprendida entre 00 y 23 ");
ok="NO";
}

// Validar si minuto_desde está comprendida entre las 00 y las 59
if (minuto_desde&gt;=0 &amp;&amp; minuto_desde&lt;=59)
{}
else
{alert("Minutos desde debe estar comprendida entre 00 y 59 ");
ok="NO";
}

Por ultimo haz un if que si Ok="SI" entonces haces el submit y si no pues nada.

Espero que te sirva
  #7 (permalink)  
Antiguo 30/03/2005, 03:42
 
Fecha de Ingreso: enero-2005
Mensajes: 265
Antigüedad: 19 años, 3 meses
Puntos: 1
La opción que comenta Mickel es la que más me gusta, posiblemente sea la más usable.
  #8 (permalink)  
Antiguo 30/03/2005, 05:03
 
Fecha de Ingreso: enero-2005
Mensajes: 116
Antigüedad: 19 años, 2 meses
Puntos: 0
Gracias a todos por vuestra ayuda. Pero la solución que más se aproxima a lo que yo buscaba es la de programeitor.
Y además, solucioné el fallo que comentaba programeitor.
Por si alguien la necesita, ahí va:
Código HTML:
 <script>
function mira(esto)
 {
   var e=esto.value;
   var l=e.length;
   // Aquí lo que hago es añadir un 0 antes de las horas con un solo digito 
   // para que el usuario no tenga que escribirlo siempre. Y en mi caso la 
   // unica hora de 1 digito es la de las 9.
   if (l==1)
    {
       if (e==9)
        {
           e="0"+e.charAt(0);
        }
    }
   if(l==3)
    {
        // Aquí compruebo si la tecla pulsada es la de retroceso. Y así ya borra 
       // perfectamente
       if (event.keyCode == 8)
           e= (e.substring(0,2)+":");
       else
           e=(e.substring(0,2)+":"+e.charAt(2));
    }
   if(l>4)
     e=e.substring(0,5);
   esto.value=e;
}
</script> 
Un saludo
  #9 (permalink)  
Antiguo 30/03/2005, 05:08
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Vámonos a JS!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #10 (permalink)  
Antiguo 31/03/2005, 16:35
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
lcrecarey me alegro de que te sirviera el codigo ,y enhorabuena por la solucion. Perfecto.
  #11 (permalink)  
Antiguo 31/03/2005, 17:07
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
.

Hola ,de nuevo.

Mira ,para añadir compatibilidad entre navegadores cambia:

function mira(esto)
por
function mira(esto,evento) // que recoge la pulsacion enviada desde el input

tambien

if (event.keyCode == 8)
por
tecla=(window.event)?window.event.keyCode : evento.which; // que da el valor
if (tecla == 8) // de la tecla pulsada segun el navegador.

y en el input

onkeyup="mira(esto)"
por
onkeyup="mira(esto,event)" <!-- que envia la pulsacion a la funcion -->

Saludos y buena suerte.

.

Última edición por programeitor; 31/03/2005 a las 17:08
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 05:15.