Cuando deseas ejecutar más de una línea de instrucción dada una condición, debes de colocar llaves de apertura y cerrado.
Código Javascript
:
Ver originalif (Date.parse(sFechaFin) > dtFechaActual){
alert("La fecha de factura no puede ser mayor a la fecha actual.");
return false;
}
Por otra parte,
Date.parse
, devuelve la cantidad de milisegundos transcurrido desde las 00:00:00 del 1 de enero de 1970 hasta la fecha indicada, mientras que
Date
, sin aplicarle alguno de sus métodos, va a devolver una cadena con esta forma:
Código Date object:
Ver originalWed May 21 2014 14:41:19 GMT-0500 (Hora est. del Pacífico de SA)
Entonces, la condición nunca se cumplirá. Para obtener el valor equivalente al que obtienes con
Date.parse
, debes utilizar el método
getTime()
.
Código Javascript
:
Ver originalif (Date.parse(sFechaFin) > dtFechaActual.getTime()){
alert("La fecha de factura no puede ser mayor a la fecha actual.");
return false;
}
Y en cuanto a la cancelación del envío de datos del formulario, en lugar de usar el
return false
, preferiría hacerlo con el método
preventDefault()
, más o menos de esta forma:
Código Javascript
:
Ver originalvar formulario = document.getElementById("formulario");
formulario.addEventListener("submit", function(event){
event.preventDefault(); //Cancelo el envío
var dtFechaActual = new Date(),
sAnioFin = document.formulario.anno.value,
sMesFin = document.formulario.mes.value,
sDiaFin = document.formulario.dia.value,
sFechaFin = sMesFin + "/" + sDiaFin + "/" + sAnioFin;
if(Date.parse(sFechaFin) > dtFechaActual.getTime())
alert("La fecha de factura no puede ser mayor a la fecha actual.");
else
this.submit(); //Si todo está bien, envío el formulario
}, false);
Quita el atributo
onsubmit
del formulario, elimina (o comenta) la función que hiciste y prueba con esta solución.
Saludos