Comunidad de diseño web y desarrollo en internet online

Ayuda con validación en formulario

Citar            
MensajeEscrito el 03 Feb 2010 10:08 pm
Hola a todos...
En mi web, tengo un formulario, en donde los usuarios ingresan un código... que tiene que tener necesariamente 7 dígitos, el 1º debe ser "P" ó "p", y los siguientes deben ser números..., es decir debe quedarme asi: "P012345"

En el script, esta es la función que tengo:

Código Javascript :

function validar_codigo(e) 
{
   tecla = (document.all) ? e.keyCode : e.which;
   if (tecla==8) return true;
      patron =/^[Pp]+[\d{6}]\s-/;
   tecla_final = String.fromCharCode(tecla);
   return patron.test(tecla_final); 
}


Este es parte de mi archivo .php

Código PHP :

<input name="Numero" type="text" id="Numero"  BORDER-BOTTOM: 1px solid;  onKeyPress="return validar_codigo(event)" size=35 maxlength=7>


Pero cuando lo pruebo, en mi formulario no puedo escribir nada... ni numeros o letras... :(

Por otro lado, hay alguna forma de hacre esto sin las expresiones regulares porque he leido que consumen recursos... y si es así cómo sería?... alguien puede ayudarme con esto?...

Gracias de antemano por sus respuestas.

Por ely0910

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 04 Feb 2010 02:52 pm
No lo hagas en onKeypress sino en onBlur (cuando el input pierde el foco).

Por lo de los recursos no te preocupes, esa sola expresión regular los recursos que consumen son despreciables.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 04 Feb 2010 03:10 pm
Gracias DriverOP por tu respuesta... pero cómo puedo hacer funcionar el patrón??....

Por ely0910

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Feb 2010 01:32 am
No había probado la expresión regular. Según has dicho la cadena debe cumplir con empezar con una "p" mayúscula o minúscula seguida de 6 dígitos entre el 0 y el 9 cada uno y nada más que eso.

He probado la que has puesto y no funciona. La expresión regular que yo encontré es esta:

Código :

^[Pp]+\d{6}$


Y en JavaScript sería:

Código Javascript :

function ValidarCodigo(valor) {
  var expresion = /^[Pp]+\d{6}$/;
  if (expresion.test(valor)) { 
      alert("La cadena es correcta."); 
  }
  else {
    alert("La cadena NO es correcta.");
  }
}


Y el HTML sería:

Código HTML :

<input type="test" value="" onBlur="ValidarCodigo(this.value);">


Tip muy importante: consigue el programa The Regex Coach, es un pequeño programa que sirve para probar expresiones regulares tipo PERL para Windows, te ahorrará muchos dolores de cabeza, granted! :P

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 05 Feb 2010 01:33 am
Bueno, era <input type="text" y no "test", error de dedo, sorry :S

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 05 Feb 2010 02:16 pm
Hey!!!... Muchas graciasss!!, por fin funcionó, ahora corriendo a descargar el "The Regex Coach"... para no darme de cabezazos con las expresiones regulares, que ya me estaban empezando a caer mal... jeje

Muchas gracias otra vez... :D

Por ely0910

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Feb 2010 02:27 pm
De nada.

No sé si lo vas a encontrar (al programa), yo hace años que lo tengo y no recuerdo de dónde lo saqué, si no lo encuentras, me escribes y te lo mando por el medio que me indiques.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.