Foros del Web » Programando para Internet » Javascript »

Validar fecha introducida en un solo campo de texto

Estas en el tema de Validar fecha introducida en un solo campo de texto en el foro de Javascript en Foros del Web. Hola a todos. Tengo el siguiente script cojido de este foro que me va perfecto he intendo de mil formas validar un campo de texto ...
  #1 (permalink)  
Antiguo 28/02/2006, 12:32
 
Fecha de Ingreso: septiembre-2005
Ubicación: España
Mensajes: 78
Antigüedad: 18 años, 7 meses
Puntos: 0
Validar fecha introducida en un solo campo de texto

Hola a todos.
Tengo el siguiente script cojido de este foro que me va perfecto he intendo de mil formas validar un campo de texto con el siguiente formato:
numero entre 01 y 31 / numero entre 01 y 12 / numero entre 1911 y 1987
es decir una fecha pero sin desglosarla en campos dia / mes / año sino todo junto en un unico campo de texto. El tema esta en que normalmente paso la fecha con una ventana flotante tipica de las agencias de viajes, pero tambien quiero que se permita la introduccion en el campo de texto a "mano" pero me provoca mucho errores y me gustaria poder verificar que se ha introducido correctamente.


Código PHP:
Código PHP:
<?php BEGIN__VBULLETIN__CODE__SNIPPET <html
<
head
<
style
form,td{font:normal 10px/10px verdana;} 
input{font:normal 10px/10px verdana;border:solid 1px black
</
style
    <
title>Prueba</title
    <
script
//Script original de KarlanKas para forosdelweb.com 
//Adaptado a firefox gracias a JavierB ;-) 

    
colorMal="#eeddee"
    
colorBien="white"
     
    
regla=new Array() 

    
regla[0]="valor.length<3"
    
regla[1]="isNaN(valor) || valor<600000000"
    
regla[2]="valor.lastIndexOf('@')!=valor.indexOf('@') || valor.indexOf('@')<2 || valor.lastIndexOf('.')<valor.length-4 || valor.lastIndexOf('.')>valor.length-3"

    
mensaje=new Array() 


    
mensaje[0]="Por favor, introduzca el nombre"
    
mensaje[1]="El número de teléfono introducido no es válido"
    
mensaje[2]="correo inválido"
     
    function 
comprobar(){  
    
errores="";  
    
mensaje2=""
    for(
a=0;a<regla.length;a++){  
    
valor=document.forms[0].elements[a].value;  
    if(eval(
regla[a])){ 
    
mensaje2=(mensaje[a])?mensaje[a]:"Por favor, rellene el campo "+document.forms[0].elements[a].name
////////

    
document.forms[0].elements[a].focus();

////////
    
errores+=mensaje2+"<br>";  
    
document.forms[0].elements[a].style.background=colorMal;}  
    else{
document.forms[0].elements[a].style.background=colorBien;}  
    }  
    
pepe=document.getElementById("herror"); 
    
pepe.style.background=(errores!="")?colorMal:colorBien;  
    
pepe.style.border=(errores!="")?"solid 1px black":"none";  
    
pepe.innerHTML=errores;  

    return (
errores==""
    }  
      
     
    
</script> 
</head> 

<body> 
<form onsubmit="return comprobar()"> 
<table><tr><td>nombre:</td><td><input type=text name=nombre></td><td style="font:normal 10px/15px verdana;padding:5px 5px 5px 5px;"rowspan=10 valign="top" id="herror"></td></tr> 
<tr><td>telefono:</td><td><input type=text name="telefono"></td></tr> 
<tr><td>e-mail:</td><td><input type=text name="email"></td></tr> 
<tr><td colspan=2 align="center"><input type="submit" value="enviar"></td></tr></table> 

</form> 


</body> 
</html>

Gracias de antemano.
  #2 (permalink)  
Antiguo 28/02/2006, 14:02
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 10 meses
Puntos: 4
if (/[01-31]{1}\/[01-12]{1}\/[1911-1987]{1}/.test(valor)) // fecha correcta
__________________
Internet Explorer SuckS
Download FireFox
  #3 (permalink)  
Antiguo 01/03/2006, 03:05
 
Fecha de Ingreso: septiembre-2005
Ubicación: España
Mensajes: 78
Antigüedad: 18 años, 7 meses
Puntos: 0
Gracias Sir, Carajodida
Pero necesito algo más resuelto pues no tengo ni idea de javascript y he probado colocando lo que me diste en 20 sitios y na de na

Algun alma caritativa que me lo de hecho?

He probado asi y asa y de mil formas y nada y es que si no sabes que tocar es dificil atinar.

Código PHP:
<?php BEGIN__VBULLETIN__CODE__SNIPPET <html>  
<
head>  
<
style>  
formtd{font:normal 10px/10px verdana;}  
input{font:normal 10px/10px verdana;border:solid 1px black}  
</
style>  
    <
title>Prueba</title>  
    <
script>  
//Script original de KarlanKas para forosdelweb.com  
//Adaptado a firefox gracias a JavierB ;-)  

    
colorMal="#eeddee";  
    
colorBien="white";  
      
    
regla=new Array()  

    
regla[0]="valor.length<3";  
    
regla[1]="isNaN(valor) || valor<600000000";  
    
regla[2]="valor.lastIndexOf('@')!=valor.indexOf('@') || valor.indexOf('@')<2 || valor.lastIndexOf('.')<valor.length-4 || valor.lastIndexOf('.')>valor.length-3";  
    
regla[3]="valor(/[01-31]{1}\/[01-12]{1}\/[1911-1987]{1}/.test(fecha))";  

    
mensaje=new Array()  


    
mensaje[0]="Por favor, introduzca el nombre";  
    
mensaje[1]="El número de teléfono introducido no es válido";  
    
mensaje[2]="correo inválido";  
    
mensaje[3]="fecha no correcta";  
      
    function 
comprobar(){   
    
errores="";   
    
mensaje2="";  
    for(
a=0;a<regla.length;a++){   
    
valor=document.forms[0].elements[a].value;   
    if(eval(
regla[a])){  
    
mensaje2=(mensaje[a])?mensaje[a]:"Por favor, rellene el campo "+document.forms[0].elements[a].name;  
    if (/[
01-31]{1}/[01-12]{1}/[1911-1987]{1}/.test(fecha));
//////// 

    
document.forms[0].elements[a].focus(); 

//////// 
    
errores+=mensaje2+"<br>";   
    
document.forms[0].elements[a].style.background=colorMal;}   
    else{
document.forms[0].elements[a].style.background=colorBien;}   
    }   
    
pepe=document.getElementById("herror");  
    
pepe.style.background=(errores!="")?colorMal:colorBien;   
    
pepe.style.border=(errores!="")?"solid 1px black":"none";   
    
pepe.innerHTML=errores;   

    return (
errores=="")  
    }   
       
      
    
</script>  
</head>  

<body>  
<form onsubmit="return comprobar()">  
<table><tr><td>nombre:</td><td><input type=text name=nombre size="20"></td><td style="font:normal 10px/15px verdana;padding:5px 5px 5px 5px;"rowspan=10 valign="top" id="herror"></td></tr>  
<tr><td>telefono:</td><td><input type=text name="telefono" size="20"></td></tr>  
<tr><td>e-mail:</td><td><input type=text name="email" size="20"></td></tr>  
<tr><td>fecha:</td><td><input type=text name="fecha" size="20"></td></tr>  
<tr><td colspan=2 align="center"><input type="submit" value="enviar"></td></tr></table>  

</form>  


</body>  
</html>
Un saludo a todos y venga un alma caritativa que me lo de en bandeja.
  #4 (permalink)  
Antiguo 12/04/2006, 07:25
 
Fecha de Ingreso: febrero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
/*Aca te paso la funcion que hice para validar fechas.

La adapte para que tu caso en particular.
Simplemente copiala y pegala.
Ejemplo de como usar esta funcion
if(esFechaEntre1911y1987(inputFecha.value)){
Alert("Correcta")
}else{
Alert("Incorrecta")
}

*/

function esFechaEntre1911y1987(fechaentexto){
rf = new RegExp("^([0-2][0-9]|3[0|1])\/(0[1-9]|1[1|2])\/(19[1-8][0-9])$")
bEsFecha = rf.test(fechaentexto)
if(bEsFecha){
valores = rf.exec(fechaentexto)
//valida el ultimo día del mes
bEsFecha = !(valores[1]==31 && (valores[2]==04 || valores[2]==06 || valores[2]==09 || valores[2]==11))
bEsFecha = bEsFecha && !(valores[2]==2 && (valores[1]>29 || (valores[1]==29 && valores[3]%4 > 0)))
//valida que no se pase de 1989
bEsFecha = bEsFecha && (valores[3] <= 1987)
}
return bEsFecha
}
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 22:10.