Hola de nuevo:
No creo que sea lo de las llaves, también puede funcionar sin ellas (aunque se entiende peor). El constructor del objeto
Date es
new Date (anio, mes, dia), y no
dia, mes, anio como has escrito.
Por otra parte tienes que tener en cuenta que nosotros contamos enero como el mes 1, pero javascript cuenta enero como mes 0. Así que
var mes = parseInt(array_fecha[1]);
tendría que ser
var mes = parseInt(array_fecha[1])-1;
También tenemos un problema con los
parseInt(). Al ponerlos sin la base conversora, si introducimos un String que comienza por cero automáticamente se toma como número octal, no decimal. Luego hay que especificar en qué base trabajamos.
El código quedaría así:
Código PHP:
<html>
<head>
<script>
function validaFecha(){
var hoy= new Date();
var array_fecha = document.formulario.fecha.value.split("/");
var anio = parseInt(array_fecha[2], 10);
var mes = parseInt(array_fecha[1], 10)-1;
var dia = parseInt(array_fecha[0], 10);
var fechaDeseada= new Date(anio, mes, dia);
var diferencia = fechaDeseada.getTime() - hoy.getTime();
var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
if (dias>30) {
return true;
}
else {
alert("Sólo servimos en un plazo superior a 30 días. La suya tiene un plazo de "+dias+" días. Introduzca una fecha posterior");
return false;
}
}
</script>
</head>
<body>
<form id="formulario" name="formulario" method="post" action="" onsubmit= "return validaFecha()" >
<input type="text" name="fecha" />
<input type="submit" name="Submit" value="Enviar"/>
</form>
</body>
</html>
Un saludo