JavaScript - Validar Fecha

   
Vista:
Imágen de perfil de humberto

Validar Fecha

Publicado por humberto (6 intervenciones) el 22/05/2015 20:00:02
Buenas amigos, me gustaría que me ayudaran. Deseo validar un campo fecha, pero quisiera que validara q si es mayor a la fecha actual. Necesito de su ayuda. Que yo al colocar 25/05/2015 me dijera un alert (“fecha error ”) y si coloco 25/03/2015 o 01/02/2015 me dijera un alert(“fecha excelente”). Este el el código.

fec=new Date;

dia=fec.getDate();
if (dia<10) dia='0'+dia;
mes=fec.getMonth()+1;
if (mes<10) mes='0'+mes;
anio=fec.getFullYear();
fecha=dia+'-'+mes+'-'+anio;

alert("Capturado: " + date + "\nActual: " + fecha);
//alert(fecha);
if(fecha < date){
alert ('error');
}else
alert ('bien');
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Validar Fecha

Publicado por Maxi (5 intervenciones) el 23/05/2015 02:25:25
Debes convertir la fecha ingresada a un objeto date para poder compararlo. Aquí te dejo un código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<html>
    <head>
        <title>Comparar Fechas</title>
    </head>
    <body>
 
        <form>
            <input type="text" id="fecha" />
            <a href="#" id="validarFecha">Validar Fecha</a>
        </form>
 
    <script>
        document.getElementById('validarFecha').onclick = function () {
            validarFecha();
        };
        function validarFecha () {
            var fechaActual = new Date();
            var fechaCapturada = document.getElementById('fecha').value;
            fechaCapturada = fechaCapturada.split('/');
            fechaCapturada = new Date(fechaCapturada[2], fechaCapturada[1], fechaCapturada[0]);
            if (fechaCapturada < fechaActual) {
                alert ('error');
            } else {
                alert ('bien');
            }
        }
    </script>
 
</body>
</html>

Algunas recomendaciones. El ejemplo sólo funciona para los casos en que la fecha ingresada tenga un formato dd/mm/YY. Deberías usar una expresión regular para validar esto (además de verificar que el campo no esté vacío).
Algunas herramientas que te pueden ayudar son un datepicker y alguna librería de manejo de fechas. Aquí te dejo unos links:

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de humberto

Validar Fecha

Publicado por humberto (6 intervenciones) el 23/05/2015 03:07:44
gracias por tu respuesta amigo, me puedes hacer el favor de explicarme esta linea de codigo. Gracias....

fechaCapturada = new Date(fechaCapturada[2], fechaCapturada[1], fechaCapturada[0]);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Validar Fecha

Publicado por Maxi (5 intervenciones) el 23/05/2015 10:15:47
Perón, generalmente comento el código que pongo de ejemplo, pero se ve que estaba medio distraído. Para hacer la comparación entre la fecha ingresada y la fecha actual necesitamos que ambas sean objetos Date. Hay 4 maneras de construir un objeto Date.

1
2
3
4
5
6
7
8
9
10
11
 //sin parámetros - devuelve la fecha actual (como en la línea 18 del ejemplo)
new Date( );
 
 //pasandole milisegundos - toma como milisegundo cero el 1/1/1970
new Date(milliseconds);
 
 //una cadena de texto con el formato "October 13, 2014 11:13:00"
new Date(datestring);
 
 // 7 argumentos numéricos indicando año, mes, día hora, min., seg, miliseg. (sólo los primero tres son obligatorios)
new Date(year,month,date[,hour,minute,second,millisecond ])

Nosotros tomamos la fecha ingresada, que es una cadena de texto con el formato dd/mm/YY y utilizamos el método split para separarla por el carácter "/" (slash). Esto nos devuelve una array de tres posiciones en donde la posición 2 es el año, la 1 el mes y la 0 el día.

En la línea tu estás interesado, lo que hacemos es usar estos valores del array para crear un objeto del tipo date (según la forma número cuatro explicada más arriba).

Ahora ya tenemos la fecha ingresada como un tipo de Date al igual que la fecha actual, entonces podemos compararlas.

Te dejo un link con más información.

http://www.w3schools.com/js/js_dates.asp
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar