Foros del Web » Programando para Internet » Javascript »

validar fechas

Estas en el tema de validar fechas en el foro de Javascript en Foros del Web. esta sentencia yo la utilizo para validar 2 campos feha de solicitud y fecha de devolucion, pero tambien necesito validar esto: osea el ejmplo es ...
  #1 (permalink)  
Antiguo 02/11/2006, 22:18
 
Fecha de Ingreso: abril-2006
Mensajes: 100
Antigüedad: 18 años
Puntos: 0
validar fechas

esta sentencia yo la utilizo para validar 2 campos feha de solicitud y fecha de devolucion, pero tambien necesito validar esto:
osea el ejmplo es asi: yo tengo en fecha de solicitud=2006-11-07 y la fec_devolucion = 2006-11-09 (asi esta correcto
pero despues que tengo esos datos asi cambio la de solicitud = 2006-11-16 me deberia mostrar un error diciendo que la fecha solicitud no ùede se superior la de devolucion

<script language="JavaScript">
function comprobarClave(){
clave1 = document.f1.solicitud.value
clave2 = document.f1.devolucion.value

if (clave1 > clave2){
alert("La fecha de solicitud es mayor que la de devolucion, digite nuevamente")
document.f1.devolucion.value = ''

}else{}
}
</script>

asi lo hago pero no funciona

<script language="JavaScript">
function comprobarCla(){
clave1 = document.f1.solicitud.value
clave2 = document.f1.devolucion.value

if ((clave2 <> '') && (clave1 > clave2)){
alert("La fecha de solicitud es mayor que la de devolucion, digite nuevamente")
document.f1.solicitud.value = ''

}else{}
}
</script>
  #2 (permalink)  
Antiguo 03/11/2006, 01:09
 
Fecha de Ingreso: agosto-2006
Mensajes: 34
Antigüedad: 17 años, 8 meses
Puntos: 0
Podrías poner el error que te marca, si es que te los muestra.

Para no escribir en vano ahi te va algo.


Por lo que he visto, no se puede comparar fechas asignandole el valor de un texto a una variable, aunque nunca lo he intentado, puesto que pasa como string.

Como son string puedes utilizar esta función

function Mid(s, n, c){
// Devuelve una cadena desde la posición n, con c caracteres
// Si c = 0 devolver toda la cadena desde la posición n

var numargs=Mid.arguments.length;

// Si sólo se pasan los dos primeros argumentos
if(numargs<3)
c=s.length-n+1;

if(c<1)
c=s.length-n+1;
if(n+c >s.length)
c=s.length-n+1;
if(n>s.length)
return "";

return s.substring(n-1,n+c-1);
}

funciona casi igual que el mid de vb, solo que en vb si no pones el tercer parámetro te obtiene todo, aquí tienes que poner cero, o si no utilizar la función subtring.
Quedaría el script:

<script...>
function test()
//solicitud = objeto.value aqui asegurate de que llegue a la variable la fecha
//devolucion = ........

//2006-11-07 Los parametros del Mid dependerian de que formato se
//utilice en la fecha, para este caso estoy manejando el que pusiste.
if (Mid(solicitud,1,4)==Mid(devolucion,1,4)) //Si es el mismo año ´
{

if (Mid(solicitud,6,2)==Mid(devolucion,6,2)) //Si es el mismo mes
{

//Como se trata del mismo mes, se compara los días
if (Number(Mid(solicitud,9,2))>Number(Mid(devolucion, 6,2)))
{
alert("Solicitud es mayor que devolucion");
}
}
else //Si no se trata del mismo mes, se compara los meses
{
//Se compara el mes, si es mayor el mes de solicitud manda el mensaje de
//error
if (Number(Mid(solicitud,6,2))>Number(Mid(devolucion, 6,2)))
{
alert("Solicitud es mayor que devolucion");
}
}
}
else // Como no se trata del mismo año, se compara los años
{
//Se compara los años, Si el año solicitud es mayor al año devolucion
if (Number(Mid(solicitud,1,4))>Number(Mid(devolucion, 1,4)))
{
alert("Solicitud es mayor que devolucion");
}
}

}


function Mid(s, n, c){
// Devuelve una cadena desde la posición n, con c caracteres
// Si c = 0 devolver toda la cadena desde la posición n

var numargs=Mid.arguments.length;

// Si sólo se pasan los dos primeros argumentos
if(numargs<3)
c=s.length-n+1;

if(c<1)
c=s.length-n+1;
if(n+c >s.length)
c=s.length-n+1;
if(n>s.length)
return "";

return s.substring(n-1,n+c-1);
}

</SCRIPT>


Nota: Se utiliza la palabre clave Number(), función que ya viene definida, esto es para convertir a entero, para así poder comparar.


Haber si esa es la solución,

Saludos.
  #3 (permalink)  
Antiguo 03/11/2006, 01:09
 
Fecha de Ingreso: agosto-2006
Mensajes: 34
Antigüedad: 17 años, 8 meses
Puntos: 0
Podrías poner el error que te marca, si es que te los muestra.

Para no escribir en vano ahi te va algo.


Por lo que he visto, no se puede comparar fechas asignandole el valor de un texto a una variable, aunque nunca lo he intentado, puesto que pasa como string.

Como son string puedes utilizar esta función

function Mid(s, n, c){
// Devuelve una cadena desde la posición n, con c caracteres
// Si c = 0 devolver toda la cadena desde la posición n

var numargs=Mid.arguments.length;

// Si sólo se pasan los dos primeros argumentos
if(numargs<3)
c=s.length-n+1;

if(c<1)
c=s.length-n+1;
if(n+c >s.length)
c=s.length-n+1;
if(n>s.length)
return "";

return s.substring(n-1,n+c-1);
}

funciona casi igual que el mid de vb, solo que en vb si no pones el tercer parámetro te obtiene todo, aquí tienes que poner cero, o si no utilizar la función subtring.
Quedaría el script:

<script...>
function test()
//solicitud = objeto.value aqui asegurate de que llegue a la variable la fecha
//devolucion = ........

//2006-11-07 Los parametros del Mid dependerian de que formato se
//utilice en la fecha, para este caso estoy manejando el que pusiste.
if (Mid(solicitud,1,4)==Mid(devolucion,1,4)) //Si es el mismo año ´
{

if (Mid(solicitud,6,2)==Mid(devolucion,6,2)) //Si es el mismo mes
{

//Como se trata del mismo mes, se compara los días
if (Number(Mid(solicitud,9,2))>Number(Mid(devolucion, 6,2)))
{
alert("Solicitud es mayor que devolucion");
}
}
else //Si no se trata del mismo mes, se compara los meses
{
//Se compara el mes, si es mayor el mes de solicitud manda el mensaje de
//error
if (Number(Mid(solicitud,6,2))>Number(Mid(devolucion, 6,2)))
{
alert("Solicitud es mayor que devolucion");
}
}
}
else // Como no se trata del mismo año, se compara los años
{
//Se compara los años, Si el año solicitud es mayor al año devolucion
if (Number(Mid(solicitud,1,4))>Number(Mid(devolucion, 1,4)))
{
alert("Solicitud es mayor que devolucion");
}
}

}


function Mid(s, n, c){
// Devuelve una cadena desde la posición n, con c caracteres
// Si c = 0 devolver toda la cadena desde la posición n

var numargs=Mid.arguments.length;

// Si sólo se pasan los dos primeros argumentos
if(numargs<3)
c=s.length-n+1;

if(c<1)
c=s.length-n+1;
if(n+c >s.length)
c=s.length-n+1;
if(n>s.length)
return "";

return s.substring(n-1,n+c-1);
}

</SCRIPT>


Nota: Se utiliza la palabre clave Number(), función que ya viene definida, esto es para convertir a entero, para así poder comparar.


Haber si esa es la solución,

Saludos.
  #4 (permalink)  
Antiguo 03/11/2006, 05:21
 
Fecha de Ingreso: abril-2006
Mensajes: 100
Antigüedad: 18 años
Puntos: 0
no me muestra ningun error
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 21:25.