Foros del Web » Programando para Internet » Javascript »

fecha por usuario es mayor a la fecha actual

Estas en el tema de fecha por usuario es mayor a la fecha actual en el foro de Javascript en Foros del Web. hola, tengo un formulario donde no quiero que se guarden los datos si la fecha que el usuario introdujo es mayor a la fecha actual ...
  #1 (permalink)  
Antiguo 21/05/2014, 09:15
 
Fecha de Ingreso: abril-2014
Ubicación: San Cristobal
Mensajes: 13
Antigüedad: 10 años, 7 meses
Puntos: 0
Pregunta fecha por usuario es mayor a la fecha actual

hola, tengo un formulario donde no quiero que se guarden los datos si la fecha que el usuario introdujo es mayor a la fecha actual (generada por el sistema obviamente). consegui una funcion, y me muestra el mensaje de error , pero igual me almacena los datos. ayuda!!!!
aqui les dejo la parte del codigo que nesecito modificar, gracias de antemano
Código PHP:
<?php
//conecto la bd antes q nada, o sea aca la estoy llamando
require('base_datos.php');
require(
'funciones.php');


$conexion conectar(); //ay ya me conecte

?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function ValidaFechas(){
var dtFechaActual = new Date();

var sAnioFin = document.formulario.anno.value;
var sMesFin = document.formulario.mes.value;
var sDiaFin = document.formulario.dia.value;
var sFechaFin = sMesFin + "/" + sDiaFin + "/" + sAnioFin;

if(Date.parse(sFechaFin) > dtFechaActual)

alert("La fecha de factura no puede ser mayor a la fecha actual.");
return false;




}
</script>
</head>
<title>Compras/Donativos</title>
</head>

<body>
<form action="guardar_entradacompra.php" method="post" name="formulario" id="formulario" onSubmit="ValidaFechas()">
<table border="1" align="center" width="600" class="tabla">
<tr>
    <td>Fecha de Factura</td>
    <td>
    
    <?php fechafactura() ?>
    
   </td>
</tr>

<tr>
    <td>Fecha Deposito</td>
    <td><input type="date" name="fechadeposito" id="fechadeposito" class="s" readonly value="<?php echo date('d/m/Y');?>"/></td> <!-- la puse Y/d/d xq es asi como lo guarda mysql , entonces para no hacer conversion lo lea y lo guardo de esa forma-->
</tr>
</table>
<table border="1" align="center" width="600" class="tabla">
<tr>
    <td colspan="2" align="center">
    <input type="submit" class="submit" value="enviar"> 
    <input type="reset" class="reset" value="borrar">
    </td>
</tr>

</table>
</form>
  #2 (permalink)  
Antiguo 21/05/2014, 14:00
Avatar de 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

Etiquetas: actual, fecha, formulario, funcion, html, input, mayor, php, usuario
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 18:24.