Foros del Web » Programando para Internet » Javascript »

validar fecha

Estas en el tema de validar fecha en el foro de Javascript en Foros del Web. tengo un texbox donde mediante un calendario le pone en el texbox y tengo esta funcion @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original function validafechadia ...
  #1 (permalink)  
Antiguo 16/03/2013, 17:15
 
Fecha de Ingreso: enero-2013
Mensajes: 87
Antigüedad: 11 años, 4 meses
Puntos: 0
validar fecha

tengo un texbox donde mediante un calendario le pone en el texbox y tengo esta funcion
Código Javascript:
Ver original
  1. function validafechadia(){
  2.     var ff =document.getElementById("ingreso").value
  3. var f = new Date();
  4.  var fecha=f.getDate() + "-" + (f.getMonth() +1) + "-" + f.getFullYear();
  5.  if(ff<fecha){
  6.     alert("La fecha final no puede ser menor a la actual")
  7.  }
  8.     }
donde ff es la fecha seleccionada en el calendario y plasmado en el texbox y f es la fecha actual y hago el if pero lo que pasa es que cuando coloco la fecha del calendario menor a la actual no me muestra el mensaje. como puedo hacer

Última edición por angieyalver; 16/03/2013 a las 17:58
  #2 (permalink)  
Antiguo 17/03/2013, 04:57
 
Fecha de Ingreso: septiembre-2010
Mensajes: 67
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: validar fecha

Cita:
Iniciado por angieyalver Ver Mensaje
tengo un texbox donde mediante un calendario le pone en el texbox y tengo esta funcion
Código Javascript:
Ver original
  1. function validafechadia(){
  2.     var ff =document.getElementById("ingreso").value
  3. var f = new Date();
  4.  var fecha=f.getDate() + "-" + (f.getMonth() +1) + "-" + f.getFullYear();
  5.  if(ff<fecha){
  6.     alert("La fecha final no puede ser menor a la actual")
  7.  }
  8.     }
donde ff es la fecha seleccionada en el calendario y plasmado en el texbox y f es la fecha actual y hago el if pero lo que pasa es que cuando coloco la fecha del calendario menor a la actual no me muestra el mensaje. como puedo hacer
En el condicional estás usando el operador "<" para comparar dos cadenas de texto (o al menos una: "fecha")... no sé si eso es correcto. Creo que sólo "+" es operador de strings. O si usas operadores de desigualdad, debes cuidar que se siguen estas reglas (sacado de mi "mataburros"):

Operadores mayor y menor:
Mayor que: >
Menor que: <
En éstos, en caso de ser ambas variables, a ambos lados del operador, números, la cosa es obvia, pero no lo es tanto si son cadenas: en este caso se compara letra a letra, comenzando por la izquierda, hasta encontrar diferencias entre las dos cadenas. Para comparar dos letras se siguen las siguientes reglas:
1.-Las mayúsculas son menores que las minúsculas (A es menor que a).
2.-Las primeras letras del abecedario son menores que las últimas.
3.-Los números son menores que las letras.


... y no estoy seguro de que lo estés haciendo.... ¿qué valor se le da, en la comparación, a un signo como "-" contenido en tu variable "fecha"?

Última edición por Profesor_Lambetain; 17/03/2013 a las 05:02 Razón: aclarar
  #3 (permalink)  
Antiguo 17/03/2013, 07:16
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: validar fecha

La forma mas facil consiste en convertir a timestamp y comparar directamente

Código:
//supongamos esta fecha, separas por dia, mes y año
var fecha = "18/03/2013";
var campos_fecha = fecha.split("/");

//generas el timestamp seleccionado por el usuario
var time_seleccionado = new Date(Date.UTC(campos_fecha[2], campos_fecha[1], campos_fecha[0], 0, 0, 0));
var timestamp_seleccionado = time_seleccionado.getTime()/1000;

//generas timestamp del sistema
var time_actual = new Date();
var timestamp_actual = time_actual.getTime()/1000;

//comparas
if(timestamp_seleccionado < timestamp_actual) {
    ...
}
Ten en cuenta que la fecha del sistema incluye las horas, de forma que puedes reconsiderar la validez creando una fecha seleccionada segun las horas del dia: los ultimos 3 argumentos del UTC son para la hora (h:m:s), de forma que si asignas 0 a las horas (tal como en el ejemplo) la comparacion se hará desde el inicio del dia, pero si asignas p.ej. 23:59:59 estarás ampliando la validez hasta el final del dia ctual.

Saludos
vosk

Etiquetas: fecha
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 23:58.