Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/05/2014, 14:00
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: fecha por usuario es mayor a la fecha actual

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 original
  1. if (Date.parse(sFechaFin) > dtFechaActual){
  2.     alert("La fecha de factura no puede ser mayor a la fecha actual.");
  3.     return false;
  4. }

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 original
  1. Wed 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 original
  1. if (Date.parse(sFechaFin) > dtFechaActual.getTime()){
  2.     alert("La fecha de factura no puede ser mayor a la fecha actual.");
  3.     return false;
  4. }

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 original
  1. var formulario = document.getElementById("formulario");
  2.  
  3. formulario.addEventListener("submit", function(event){
  4.     event.preventDefault(); //Cancelo el envío
  5.  
  6.     var dtFechaActual = new Date(),
  7.         sAnioFin = document.formulario.anno.value,
  8.         sMesFin = document.formulario.mes.value,
  9.         sDiaFin = document.formulario.dia.value,
  10.         sFechaFin = sMesFin + "/" + sDiaFin + "/" + sAnioFin;
  11.  
  12.     if(Date.parse(sFechaFin) > dtFechaActual.getTime())
  13.         alert("La fecha de factura no puede ser mayor a la fecha actual.");
  14.     else
  15.         this.submit(); //Si todo está bien, envío el formulario
  16. }, false);

Quita el atributo onsubmit del formulario, elimina (o comenta) la función que hiciste y prueba con esta solución.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand