Foros del Web » Programando para Internet » Javascript »

JS para Campo de texto que valide Horas

Estas en el tema de JS para Campo de texto que valide Horas en el foro de Javascript en Foros del Web. Necesito hacer algo, pero no se bien como explicarlo. He visto (y espero que ustedes también) navegando por la web, que existe alguna forma de ...
  #1 (permalink)  
Antiguo 28/08/2009, 14:03
Avatar de pabloe9k  
Fecha de Ingreso: julio-2008
Ubicación: Argentina
Mensajes: 190
Antigüedad: 15 años, 9 meses
Puntos: 3
Pregunta JS para Campo de texto que valide Horas

Necesito hacer algo, pero no se bien como explicarlo.

He visto (y espero que ustedes también) navegando por la web, que existe alguna forma de hacer una casilla de texto (<input type="text">, supongo) que valida uno a uno los caracteres ingresados, a medida que los vas escribiendo.

Esto resúlta muy útil en casillas para ingresar una horario, ya que obliga al usuario a colocar, por ejemplo, dos caracteres para la hora, el símbolo ":" y dos caracteres más para los minutos. Y el cursor va saltando al campo de al lado para escribir. Es realmente una función muy útil.

Visualmente se ve así:




No me acuerdo donde lo ví, como para copiarme el código, sólo atiné a hacer un print de pantalla.

Alguien sabe como se hace??
Se entiende lo que busco??

Espero que puedan ayudarme.
Como siempre, muchas gracias, gente.

Saludos.
  #2 (permalink)  
Antiguo 29/08/2009, 06:12
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: JS para Campo de texto que valide Horas

Hola

Podría usar mascaras de entrada

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 29/08/2009, 06:30
Avatar de pabloe9k  
Fecha de Ingreso: julio-2008
Ubicación: Argentina
Mensajes: 190
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: JS para Campo de texto que valide Horas

Cita:
Iniciado por Adler Ver Mensaje
Hola

Podría usar mascaras de entrada

Suerte
Dado que mi conocimiento es muy básico, podrías decirme que es una 'máscara de entrada' y pasarme el código para que quede como yo busco?

Muchas gracias.
  #4 (permalink)  
Antiguo 29/08/2009, 06:54
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: JS para Campo de texto que valide Horas

Hola

Prueba con esto

Código javascript:
Ver original
  1. <html>
  2. </head>
  3. <script type="text/javascript">
  4. var patron = new Array(2,2)
  5. function Validar(elem,separador,pat,numerico) {
  6.     if(elem.valoranterior != elem.value) {
  7. valor = elem.value;
  8. largo = valor.length;
  9. valor = valor.split(separador);
  10. valor2 = "";
  11.  
  12.     for(i=0; i<valor.length; i++) {
  13.         valor2 += valor[i];
  14.     }
  15.  
  16.     if(numerico){
  17.         for(j=0; j<valor2.length; j++){
  18.             if(isNaN(valor2.charAt(j))){
  19.                 letra = new RegExp(valor2.charAt(j),"g");
  20.                 valor2 = valor2.replace(letra,"");
  21.             }
  22.         }
  23.     }
  24.  
  25. valor = "";
  26. valor3 = new Array();
  27.     for(n=0; n<pat.length; n++) {
  28.         valor3[n] = valor2.substring(0,pat[n]);
  29.         valor2 = valor2.substr(pat[n]);
  30.     }
  31.  
  32. for(q=0; q<valor3.length; q++) {
  33.             if(q == 0) {
  34.                 if (valor3[0] > 24) {
  35.                         valor = "";
  36.                  }else{
  37.                         valor = valor3[q];
  38.                 }
  39.  
  40.             }else{
  41.                     if(valor3[q] != "") {
  42.             if ((valor3[0] == 24) && (valor3[1] > 0)) {
  43.                 valor = "00";
  44.             } else if (valor3[1] > 59) {
  45.                 valor = valor3[0];
  46.             }else{
  47.                 valor += separador + valor3[q];
  48.             }
  49.                  }
  50.             }
  51. }
  52.  
  53.     elem.value = valor;
  54.     elem.valoranterior = valor;
  55.     }
  56. }
  57. </script>
  58. </head>
  59. <body>
  60. <form>
  61. <h1>Valida una fecha yyyy-mm-dd</h1>
  62. <input type="text" name="fecha" id= "fecha" onkeyup="Validar(this,':',patron,true)" maxlength="5" />
  63. </form>
  64. </body>
  65. </html>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 29/08/2009, 08:41
Avatar de pabloe9k  
Fecha de Ingreso: julio-2008
Ubicación: Argentina
Mensajes: 190
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: JS para Campo de texto que valide Horas

Sencillamente, espectacular!!
Vos sí que la tenés clara!!
Todo mi karma para vos!!!
Jajaja.
Saludos y gracias.
  #6 (permalink)  
Antiguo 29/08/2009, 11:16
Avatar de pabloe9k  
Fecha de Ingreso: julio-2008
Ubicación: Argentina
Mensajes: 190
Antigüedad: 15 años, 9 meses
Puntos: 3
Pregunta Respuesta: JS para Campo de texto que valide Horas

Cita:
Iniciado por Adler Ver Mensaje
Hola

Podría usar mascaras de entrada

Suerte
El código para la hora funcionó de maravilla.
Podrás pasarme algo para validar que se ingresen sólo dos números?
Quiero ingresar una cantidad que puede ir de 1 a 99,9. (sólo un decimal).

Se que es un abuso esto, pero prometo no molestarte más.
Gracias nuevamente, amigo.
  #7 (permalink)  
Antiguo 31/08/2009, 05:21
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: JS para Campo de texto que valide Horas

Hola

Cita:
Iniciado por pabloe9k Ver Mensaje
El código para la hora funcionó de maravilla.
Podrás pasarme algo para validar que se ingresen sólo dos números?
Quiero ingresar una cantidad que puede ir de 1 a 99,9. (sólo un decimal).

Se que es un abuso esto, pero prometo no molestarte más.
Gracias nuevamente, amigo.
Lo que pretendes no se hacerlo, de hecho no creo que se pueda hacer. Pongamos por ejemplo que el usuario introduce los dígitos 123 ¿Qué número quiso introducir, 1,23 o 12,3?

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 31/08/2009, 06:50
Avatar de pabloe9k  
Fecha de Ingreso: julio-2008
Ubicación: Argentina
Mensajes: 190
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: JS para Campo de texto que valide Horas

Cita:
Iniciado por Adler Ver Mensaje
Hola



Lo que pretendes no se hacerlo, de hecho no creo que se pueda hacer. Pongamos por ejemplo que el usuario introduce los dígitos 123 ¿Qué número quiso introducir, 1,23 o 12,3?

Suerte
No te preocupes, de por sí me has ayudado muchísimo.
Gracias, Adler.

Saludos.
  #9 (permalink)  
Antiguo 31/08/2009, 09:22
Avatar de Javier01  
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 261
Antigüedad: 16 años, 2 meses
Puntos: 31
Respuesta: JS para Campo de texto que valide Horas

Buenas tardes! tal vez este codigo te siva!

Código codigo:
Ver original
  1. <html>
  2. </head>
  3. <script type="text/javascript">
  4.  
  5. function isNumberKey(evt,elem) {
  6.     var charCode = (evt.which) ? evt.which : event.keyCode;
  7.     if (charCode > 31 && (charCode < 44 || charCode > 57 || charCode==45 || charCode==46 || charCode==47)){
  8.         return false;
  9.     }
  10.     else{
  11.         var valor=elem.value;
  12.         var tamanio=elem.value.length
  13.         if (elem.value > 99){
  14.             elem.value=99 + ',9';
  15.             return false;
  16.         }
  17.         if(charCode == 44){
  18.             if(valor.indexOf(',') < 0){
  19.                 if (tamanio > 0 && tamanio < 3){
  20.                  return true;
  21.                 }
  22.                 else {
  23.                     return false;
  24.                 }
  25.             }
  26.             else{
  27.                 return false;
  28.             }
  29.         }
  30.     }
  31. }
  32.  
  33. </script>
  34. </head>
  35. <body>
  36. <form>
  37. <h1>Valida del 1 al 99,9</h1>
  38. <input type="text" name="numero" id= "numero" onKeypress="return isNumberKey(event,this)" maxlength="4" />
  39. </form>
  40. </body>
  41. </html>

No esta para nada "pulido", pero capas te sirve de algo.
suerte y saludos
__________________
Tomarse un tiempo para redactar correctamente la pregunta, utilizando los signos de puntuación adecuados, es ganar tiempo y calidad en la respuesta.
  #10 (permalink)  
Antiguo 31/08/2009, 09:36
Avatar de pabloe9k  
Fecha de Ingreso: julio-2008
Ubicación: Argentina
Mensajes: 190
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: JS para Campo de texto que valide Horas

Cita:
Iniciado por Javier01 Ver Mensaje
Buenas tardes! tal vez este codigo te siva!

Código codigo:
Ver original
  1. <html>
  2. </head>
  3. <script type="text/javascript">
  4.  
  5. function isNumberKey(evt,elem) {
  6.     var charCode = (evt.which) ? evt.which : event.keyCode;
  7.     if (charCode > 31 && (charCode < 44 || charCode > 57 || charCode==45 || charCode==46 || charCode==47)){
  8.         return false;
  9.     }
  10.     else{
  11.         var valor=elem.value;
  12.         var tamanio=elem.value.length
  13.         if (elem.value > 99){
  14.             elem.value=99 + ',9';
  15.             return false;
  16.         }
  17.         if(charCode == 44){
  18.             if(valor.indexOf(',') < 0){
  19.                 if (tamanio > 0 && tamanio < 3){
  20.                  return true;
  21.                 }
  22.                 else {
  23.                     return false;
  24.                 }
  25.             }
  26.             else{
  27.                 return false;
  28.             }
  29.         }
  30.     }
  31. }
  32.  
  33. </script>
  34. </head>
  35. <body>
  36. <form>
  37. <h1>Valida del 1 al 99,9</h1>
  38. <input type="text" name="numero" id= "numero" onKeypress="return isNumberKey(event,this)" maxlength="4" />
  39. </form>
  40. </body>
  41. </html>

No esta para nada "pulido", pero capas te sirve de algo.
suerte y saludos
Te agradezco mucho pero no está funcionando este código.
Si escribo el valor 222, al tabular (cambié el llamado a la función por 'onBlur') me modifica el valor a 99,9, no a 22,2.
Lamentablemente no tengo el conocimiento de Java como para modificar el código.
Gracias de todos modos.

Saludos.
  #11 (permalink)  
Antiguo 31/08/2009, 10:11
Avatar de Javier01  
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 261
Antigüedad: 16 años, 2 meses
Puntos: 31
Respuesta: JS para Campo de texto que valide Horas

Cita:
Iniciado por pabloe9k Ver Mensaje
Te agradezco mucho pero no está funcionando este código.
Si escribo el valor 222, al tabular (cambié el llamado a la función por 'onBlur') me modifica el valor a 99,9, no a 22,2.
Lamentablemente no tengo el conocimiento de Java como para modificar el código.
Gracias de todos modos.

Saludos.
tienes razon, pero solo lo puse porque suponiendo que ponia un numero mayor a 100, lo reseteaba al mas sercano (osea 99,9).
Pero si quieres que si al poner un numero mayor, ponga el mas parecido (si pone 754 cambie a 75,4)
prueba con esta modificacion:

Código javascript:
Ver original
  1. <html>
  2. </head>
  3. <script type="text/javascript">
  4.  
  5. function isNumberKey(evt,elem) {
  6.     var charCode = (evt.which) ? evt.which : event.keyCode;
  7.     if (charCode > 31 && (charCode < 44 || charCode > 57 || charCode==45 || charCode==46 || charCode==47)){
  8.         return false;
  9.     }
  10.     else{
  11.         var valor=elem.value;
  12.         var tamanio=elem.value.length
  13.         if(charCode == 44){
  14.             if(valor.indexOf(',') < 0){
  15.                 if (tamanio > 0 && tamanio < 3){
  16.                  return true;
  17.                 }
  18.                 else {
  19.                     return false;
  20.                 }
  21.             }
  22.             else{
  23.                 return false;
  24.             }
  25.         }
  26.     }
  27. }
  28.  
  29. function mayor(elem){
  30.     if (elem.value > 99){
  31.         if (elem.value.length >3){
  32.             elem.value= elem.value.substr(0,3)
  33.         }
  34.         var valor=elem.value;
  35.         valor = elem.value.substr(0,2) + ',' + elem.value.substr(2,3);
  36.         elem.value=valor;
  37.     }
  38. }
  39.  
  40. </script>
  41. </head>
  42. <body>
  43. <form>
  44. <h1>Valida del 1 al 99,9</h1>
  45. <input type="text" onpaste="return false" name="numero" id= "numero" onkeyup="mayor(this)" onKeypress="return isNumberKey(event,this)" maxlength="4" />
  46. </form>
  47. </body>
  48. </html>
__________________
Tomarse un tiempo para redactar correctamente la pregunta, utilizando los signos de puntuación adecuados, es ganar tiempo y calidad en la respuesta.

Última edición por Javier01; 31/08/2009 a las 14:02
  #12 (permalink)  
Antiguo 01/09/2009, 08:04
Avatar de pabloe9k  
Fecha de Ingreso: julio-2008
Ubicación: Argentina
Mensajes: 190
Antigüedad: 15 años, 9 meses
Puntos: 3
De acuerdo Respuesta: JS para Campo de texto que valide Horas

Cita:
Iniciado por Javier01 Ver Mensaje
tienes razon, pero solo lo puse porque suponiendo que ponia un numero mayor a 100, lo reseteaba al mas sercano (osea 99,9).
Pero si quieres que si al poner un numero mayor, ponga el mas parecido (si pone 754 cambie a 75,4)
prueba con esta modificacion:

Código javascript:
Ver original
  1. <html>
  2. </head>
  3. <script type="text/javascript">
  4.  
  5. function isNumberKey(evt,elem) {
  6.     var charCode = (evt.which) ? evt.which : event.keyCode;
  7.     if (charCode > 31 && (charCode < 44 || charCode > 57 || charCode==45 || charCode==46 || charCode==47)){
  8.         return false;
  9.     }
  10.     else{
  11.         var valor=elem.value;
  12.         var tamanio=elem.value.length
  13.         if(charCode == 44){
  14.             if(valor.indexOf(',') < 0){
  15.                 if (tamanio > 0 && tamanio < 3){
  16.                  return true;
  17.                 }
  18.                 else {
  19.                     return false;
  20.                 }
  21.             }
  22.             else{
  23.                 return false;
  24.             }
  25.         }
  26.     }
  27. }
  28.  
  29. function mayor(elem){
  30.     if (elem.value > 99){
  31.         if (elem.value.length >3){
  32.             elem.value= elem.value.substr(0,3)
  33.         }
  34.         var valor=elem.value;
  35.         valor = elem.value.substr(0,2) + ',' + elem.value.substr(2,3);
  36.         elem.value=valor;
  37.     }
  38. }
  39.  
  40. </script>
  41. </head>
  42. <body>
  43. <form>
  44. <h1>Valida del 1 al 99,9</h1>
  45. <input type="text" onpaste="return false" name="numero" id= "numero" onkeyup="mayor(this)" onKeypress="return isNumberKey(event,this)" maxlength="4" />
  46. </form>
  47. </body>
  48. </html>
Esaaaaa!!
Realmente espectacular, mi amigo!!!

La verdad que la gente del foro tiene un conocimiento increíble.
Muchas gracias, nuevamente.
Saludos y gracias nuevamente.

Mi karma para vos.
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:24.