Foros del Web » Programando para Internet » Javascript »

problema con fechas

Estas en el tema de problema con fechas en el foro de Javascript en Foros del Web. Hola. Estoy haciendo un formulario en el que hay fecha de inicio y fecha de finalización. Logicamente, la fecha final debe ser mayor que la ...
  #1 (permalink)  
Antiguo 20/12/2006, 11:42
Avatar de pablocb  
Fecha de Ingreso: octubre-2006
Ubicación: Valencia
Mensajes: 39
Antigüedad: 17 años, 7 meses
Puntos: 0
problema con fechas

Hola.
Estoy haciendo un formulario en el que hay fecha de inicio y fecha de finalización.
Logicamente, la fecha final debe ser mayor que la inicial no? ok. pues tengo un problema al comprobarlo en javascript.

Las fecha se introducen mediante tres campos select (dia, mes, año).

Bien, segun he podido averiguar, el problema esta que cuando uno de estos tres select tiene un valor de dos cifras, javascript solo recoge la primera.

Asi:

dia inicio=12 y dia fin=23 ok (1<2)
pero por ejemplo:
dia inicio=8 y dia fin=23 ERROR!! (8>2)!

Da error cuando deberia estar bien, pues 23 es mayor que 8.

Espero que me puedan ayudar. Gracias.
  #2 (permalink)  
Antiguo 20/12/2006, 11:48
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: problema con fechas

Hola:

Los campos de un formulario son siempre de texto, así que para operaciones numéricas se deben convertir con parseInt parseInt(dia.value)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 20/12/2006, 11:58
Avatar de pablocb  
Fecha de Ingreso: octubre-2006
Ubicación: Valencia
Mensajes: 39
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: problema con fechas

Este es el codigo de la funcion:
Código:
function comprueba_mayor(){     //comprueba que la fecha final es mayor que la inicial
var error=0;
var mesi;
var mesf;

mesi=document.datos.mes_inicio.value;
mesf=document.datos.mes_fin.value;
parseInt(mesi);
parseInt(mesf);

if(document.datos.any_inicio.value>document.datos.any_fin.value){
 error=1; alert("El any inicial no puede ser mayor que el final");
 document.datos.any_inicio.focus();
}
else{
 if(mesi>mesf){
  error=1; alert("El mes inicial no puede ser mayor que el final");
  document.datos.mes_inicio.focus();
 }
 else{
  if(document.datos.dia_inicio.value>=document.datos.dia_fin.value){
   error=1; alert(document.datos.dia_inicio.value); alert(document.datos.dia_fin.value);
   alert("El dia inicial no puede ser mayor que el final");
   document.datos.dia_inicio.focus();
  }
 }
}
return error;
}
Asi, poniendo mes inicial Diciembre(12) y mes final Abril(4) del mismo año, no da error, cuando deberia (no da error ya que 1<4).

Si me pueden ayudar...
  #4 (permalink)  
Antiguo 20/12/2006, 12:25
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: problema con fechas

Hola:

parseInt es una función (o sea devuelve un resultado)

Prueba así:

mesi = parseInt(document.datos.mes_inicio.value);
mesf = parseInt(document.datos.mes_fin.value);

... y así con el resto de valores (días y años...)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 20/12/2006, 12:33
Avatar de pablocb  
Fecha de Ingreso: octubre-2006
Ubicación: Valencia
Mensajes: 39
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: problema con fechas

Gracias, ahora funciona.

Muy tonto por mi parte...

Gracias.
  #6 (permalink)  
Antiguo 20/12/2006, 12:36
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: problema con fechas

Cita:
Iniciado por pablocb Ver Mensaje
Gracias, ahora funciona.

Muy tonto por mi parte...

Gracias.
Me alegro de que ya funcione... y lo de los errores tontos... estoy seguro de que nos pasa a todos.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 12:54.