Foros del Web » Programando para Internet » Javascript »

Validacion JavaScript fallida

Estas en el tema de Validacion JavaScript fallida en el foro de Javascript en Foros del Web. Hola, cómo están? Necesito validar un tipo de dato para un form, siendo válido únicamente si posee 3 letras mayúsculas, un guión medio y un ...
  #1 (permalink)  
Antiguo 20/12/2010, 10:27
Avatar de SangrePura  
Fecha de Ingreso: febrero-2006
Mensajes: 28
Antigüedad: 18 años, 2 meses
Puntos: 0
Validacion JavaScript fallida

Hola, cómo están?

Necesito validar un tipo de dato para un form, siendo válido únicamente si posee 3 letras mayúsculas, un guión medio y un número de 6 cifras, por ejemplo:

ABC-123456

Tengo la siguiente validación pero el '10' indica coincidencia hasta el caracter 10, a partir del caracter 11 la validación ya no funciona:

Código:
/[A-Z\-0-999999]{10,}/
Entonces necesitaría limitar el largo total a 10, ni 9 ni 11. Espero que puedan ayudarme. Gracias.
  #2 (permalink)  
Antiguo 20/12/2010, 14:22
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Validacion JavaScript fallida

en principio y sin probarlo creo que la expresión mas correcta es /[A-Z]{3}(\-)[0-9]{6}/
después eso que dices que necesitas limitar el largo total a 10, ni 9 ni 11, usa la propiedad html maxlength para el exceso, para el defecto no hay nada que puedas hacer, es el usuario el que decide cuantos caracteres insertar
  #3 (permalink)  
Antiguo 21/12/2010, 06:45
Avatar de SangrePura  
Fecha de Ingreso: febrero-2006
Mensajes: 28
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Validacion JavaScript fallida

Hola IsaBelM, antes que nada, gracias por responder.

Te cuento que el resultado es el mismo que tenía con el código anterior, si el usuario pone "ABC-123456" y le quita cualquier caracter, se ejecuta la validación (se muestra una ventanita con mi mensaje).

Ahora, si pone "ABC-123456" y le agrega un caracter en la parte numérica (suponiendo que se le pifió una tecla), no se ejecuta la validación y puede pasar a otro campo como si nada... lo que produce un dato inconsistente.

Se me ocurre aplicar la propiedad que me sugeriste para resolverlo fácil y rápido, es que ya me interesaba lograr esto con Javascript

Saludos,
  #4 (permalink)  
Antiguo 21/12/2010, 08:55
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Validacion JavaScript fallida

supongo que la validación es mas o menos esta if(expresion.test(campo). si es así no comprendo que ocurra eso que dices. de cualquier modo, has de tener presente dos cosas. la validación que realmente vale, es la que se hace del lado del servidor, y la otra sugerencia, es que uses javascript siempre y cuando html y css no te permita hacer lo que pretendes
  #5 (permalink)  
Antiguo 21/12/2010, 10:57
Avatar de SangrePura  
Fecha de Ingreso: febrero-2006
Mensajes: 28
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Validacion JavaScript fallida

Es cierto lo que decís, la verdad es que me compliqué más de la cuenta. Pude resolverlo fácil limitando a 10 caracteres el campo del form, de esa manera se cumplirá la validación /[A-Z]{3}(\-)[0-9]{6}/ y el cliente no podrá ingresar más caracteres (los cuales ya no hubiesen sido reconocidos en esta validación )

De todas formas estudiaré la validación que sugeriste ya que, como dije, ando complicándola a propósito porque estoy incursionando en esto del javascript xD

Gracias por colaborarme.
Saludos,
  #6 (permalink)  
Antiguo 04/04/2011, 06:38
Avatar de SangrePura  
Fecha de Ingreso: febrero-2006
Mensajes: 28
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Validacion JavaScript fallida

Che te acordás de esto??? bueno, se me presentó un problema en otro caso que hice, la validación sería la siguiente para que el usuario sólo pueda colocar un número de 5 o 6 cifras de largo:

/[0-9]{5}/

Esto funciona perfecto, el problema es que si coloco un número de 5 cifras y una letra, la validación no salta, por ejemplo esto:

12345G

Ahora, si hago esto otro sí salta:

1234G5



La verdad no entiendo porque la validación no permite letras.

Gracias por cualquier ayuda.
  #7 (permalink)  
Antiguo 04/04/2011, 07:34
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Validacion JavaScript fallida

cual de las dos es la cadena correcta?? y si no es ninguna de ellas, cual es la cadena correcta?? en principio prueba con esto /^[0-9]{5}$/
  #8 (permalink)  
Antiguo 04/04/2011, 09:57
Avatar de SangrePura  
Fecha de Ingreso: febrero-2006
Mensajes: 28
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Validacion JavaScript fallida

Te cuento, sólo pueden ser correctas las cadenas numéricas de 5 o 6 cifras. Los casos que yo puse suponen un error del usuario (insertar una letra). Si la letra se coloca al final de la cadena, la validación no se activa y se puede ingresar un dato no numérico, lo cual está mal. Si la letra se coloca en otro lado, sí se cumple la validación.

En pocas palabras lo que necesito es restringir la inserción de datos, siendo posible sólo una cadena de números que tenga 5 dígitos como mínimo o 6 como máximo. Es decir que podría ser cualquiera de las siguientes:

12345

o

123456

Gracias por colaborarme,
  #9 (permalink)  
Antiguo 04/04/2011, 13:46
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Validacion JavaScript fallida

el patrón es el que te mostraba en el anterior post, cambiando el cuantificador
Cita:
/^\d{5,6}$/
  #10 (permalink)  
Antiguo 05/04/2011, 07:33
Avatar de SangrePura  
Fecha de Ingreso: febrero-2006
Mensajes: 28
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Validacion JavaScript fallida

Excelente! Tante grazie, ragazza


Etiquetas: validar
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 17:18.