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.