Foros del Web » Programando para Internet » Javascript »

Validación y expresiones regulares

Estas en el tema de Validación y expresiones regulares en el foro de Javascript en Foros del Web. Hola a todos gente del foro! Espero que estén muy bien! No sé si ya hayan preguntado ésto con anterioridad, pero me gustaría validar que ...
  #1 (permalink)  
Antiguo 29/12/2011, 17:59
 
Fecha de Ingreso: julio-2011
Ubicación: Ciudad de México
Mensajes: 25
Antigüedad: 12 años, 9 meses
Puntos: 0
Sonrisa Validación y expresiones regulares

Hola a todos gente del foro! Espero que estén muy bien!

No sé si ya hayan preguntado ésto con anterioridad, pero me gustaría validar que en un textbox sólamente acepte números y guiones -lo utilizaré para fechas, el formato debe ser AAAA-MM-DD- que cuando el usuario ingrese texto, me mande un "alert"

Aquí pongo el código que he hecho hasta ahorita (y también introduciéndome en el mundo de las "expresiones regulares").

Textbox:

Código:
Fecha de inicio  
      <input type="text" id="fecha_inicio" name="fecha_ini" /> &nbsp;
      <input type="button" id="calendario1" value="»" name="calend1" />
y éste de aquí abajo es el código de mi validación en javascript:

Código:
function ValidarCampoFecha1(){
 
 var expresion = /\d{4}-\d{2}-\d{2}/;
 var concuerda = new RegExp(expresion);
 
 if(document.getElementById("fecha_inicio").value.match(concuerda))
 {
  return true;   
 }
 else
 {
  alert("La fecha sólamente debe contener números y guión. Formato AAAA-MM-DD");   
 }
}

He revisado mi función y parece ser que está bien... pero al momento de invocar la función con un "onSubmit()" si ingreso texto dentro del textbox (donde se supone que sólamente debe ir un número como "2011-12-29") no me aparece mi alert!

Espero me puedan ayudar, gracias por su atención y feliz año nuevo!!!

Última edición por htmlnewbie; 29/12/2011 a las 18:03 Razón: Profundizar más en el problema
  #2 (permalink)  
Antiguo 29/12/2011, 18:38
Avatar de Dnielf  
Fecha de Ingreso: diciembre-2008
Ubicación: 127.0.0.1
Mensajes: 72
Antigüedad: 15 años, 4 meses
Puntos: 14
Respuesta: Validación y expresiones regulares

Me funciona en Google Chrome, prueba poniendo
Código Javascript:
Ver original
  1. return false;
después del alert.
  #3 (permalink)  
Antiguo 30/12/2011, 10:16
 
Fecha de Ingreso: julio-2011
Ubicación: Ciudad de México
Mensajes: 25
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Validación y expresiones regulares

Hola Dnielf! Gracias por tu respuesta!

No me había dado cuenta de eso, pero a pesar de que puse el "return false", no me manda el "alert" D:

Alguna idea de qué puede estar mal?
  #4 (permalink)  
Antiguo 30/12/2011, 10:28
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validación y expresiones regulares

Cita:
var expresion = /\d{4}-\d{2}-\d{2}/;
var concuerda = new RegExp(expresion);
Dah fuck? O una u otra:
Código Javascript:
Ver original
  1. var rg = /\d{4}-\d{2}-\d{2}/;
  2.  
  3.  
  4. var rg = new RegExp('\\d{4}-\\d{2}-\\d{2}');
Usa ^ y $ para asegurarte de que son el inicio y el fin de la cadena:
Código Javascript:
Ver original
  1. var rg = /^\d{4}-\d{2}-\d{2}$/;
No uses match! Usa test:
Código Javascript:
Ver original
  1. rg.test(campo.value); // true | false
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #5 (permalink)  
Antiguo 30/12/2011, 10:49
 
Fecha de Ingreso: julio-2011
Ubicación: Ciudad de México
Mensajes: 25
Antigüedad: 12 años, 9 meses
Puntos: 0
Sonrisa Respuesta: Validación y expresiones regulares

Hola _cronos2! Gracias por tu respuesta :D

Fíjate que hice los cambios así como me comentaste, y aun así sigue sin mandar el alert! Aquí te dejo el código de lo que he hecho hasta ahorita:

Código:
function ValidarCampoFecha1(){
 
 var concuerda = new RegExp(/^\d{4}-\d{2}-\d{2}$/);
 
 if(!concuerda.test(document.getElementById("fecha_inicio").value))
  {
   alert("La fecha sólamente debe contener números y guión. Formato AAAA-MM-DD");
   return false;
  }
  else
   return true;
}
Podrías decirme en qué estoy mal? Saludos!
  #6 (permalink)  
Antiguo 30/12/2011, 11:03
 
Fecha de Ingreso: julio-2011
Ubicación: Ciudad de México
Mensajes: 25
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Validación y expresiones regulares

También utilicé la siguiente forma:

Código:
function ValidarCampoFecha1(){
 
 var fecha_ini = document.getElementById("fecha_inicio");
// var concuerda = new RegExp(/^\d{4}-\d{2}-\d{2}$/);
 
 if(/^\d{4}-\d{2}-\d{2}$/.test(fecha_ini))
 {
  return true;   
 }
 else
 {
  alert("La fecha sólamente debe contener números y guión. Formato AAAA-MM-DD");
  return false;
 }
}
Y nada!
  #7 (permalink)  
Antiguo 30/12/2011, 11:17
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validación y expresiones regulares

En el primer intento te falla lo mismo que antes, usa los literales y olvídate del constructor! Crea la regexp como en el segundo, y si quieres la almacenas en una variable.
En el segundo te falla que a test le estás pasando el input, no el valor del input. Tienes que añadirle ".value"
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #8 (permalink)  
Antiguo 30/12/2011, 11:19
Avatar de mike28gt  
Fecha de Ingreso: abril-2010
Mensajes: 56
Antigüedad: 14 años
Puntos: 14
Respuesta: Validación y expresiones regulares

Tu función me funciona desde el inicio, no será algún problema al llamar a la función?
  #9 (permalink)  
Antiguo 30/12/2011, 11:26
 
Fecha de Ingreso: julio-2011
Ubicación: Ciudad de México
Mensajes: 25
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Validación y expresiones regulares

Gracias por tu respuesta _cronos2

mike28gt, la función la estoy llamando con un "onsubmit()" (con la cual también estoy llamando otras funciones de validación que hice :P), la forma en que lo invoco es la siguiente:

Código:
function ValidaTodo(){
    
 if(ValidaTextboxVacio() == true && ValidaFechaVacia1() == true && ValidaFechaVacia2() == true)
 {
  if(ValidaFechaInicio() == true && ValidaFechaFin() == true && ValidaFechaIgual() == true)
  {
   if((ValidarCheckbox() == true || document.getElementById("diariamente").checked == true))
   {
    if(ValidarCampoFecha1() == true && ValidarCampoFecha2() == true)
    {
     document.crear_mensaje.submit();   
    }
    else
    {
     return false;   
    }
   }   
  }
 }
 
}
El "true" que tengo aquí para "ValidaCampoFecha1()" es porque lo hacía de la primer forma :P

Última edición por htmlnewbie; 30/12/2011 a las 11:29 Razón: profundizar en el tema
  #10 (permalink)  
Antiguo 30/12/2011, 12:02
Avatar de mike28gt  
Fecha de Ingreso: abril-2010
Mensajes: 56
Antigüedad: 14 años
Puntos: 14
Respuesta: Validación y expresiones regulares

Tienes muchas validaciones, como sabes que es esa función la que te esta fallando? que pasa si ejecutas la función ValidaTodo() de este modo?

Código:
function ValidaTodo(){
    
/* if(ValidaTextboxVacio() == true && ValidaFechaVacia1() == true && ValidaFechaVacia2() == true)
 {
  if(ValidaFechaInicio() == true && ValidaFechaFin() == true && ValidaFechaIgual() == true)
  {
   if((ValidarCheckbox() == true || document.getElementById("diariamente").checked == true))
   {*/
    if(ValidarCampoFecha1() == true /*&& ValidarCampoFecha2() == true*/)
    {
     document.crear_mensaje.submit();   
    }
    else
    {
     return false;   
    }
   /*
   }   
  }
 }
 */
}
  #11 (permalink)  
Antiguo 30/12/2011, 12:21
 
Fecha de Ingreso: julio-2011
Ubicación: Ciudad de México
Mensajes: 25
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Validación y expresiones regulares

mike28gt, ya encontré mi error :P

La función SÍ TRABAJA, pero como la estoy llamando después de las funciones "Valida Checkbox", el alert solo se mostraría después de corregir los errores que surgieron antes de llamar la función "ValidarCampoFecha1()".

Gracias a todos por su ayuda :) Feliz año nuevo!

Etiquetas: cadena-de-caracteres, expresiones_regulares, validación_formulario
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 12:13.