Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema con formulario, validar fechas y pasar datos por action

Estas en el tema de Problema con formulario, validar fechas y pasar datos por action en el foro de Javascript en Foros del Web. Muy buenas. Tengo un problemilla con mi código, el cual me compara un par de fechas y horas que estén en un input dentro de ...
  #1 (permalink)  
Antiguo 01/06/2017, 09:44
 
Fecha de Ingreso: mayo-2012
Mensajes: 25
Antigüedad: 11 años, 11 meses
Puntos: 1
Sonrisa Problema con formulario, validar fechas y pasar datos por action

Muy buenas.

Tengo un problemilla con mi código, el cual me compara un par de fechas y horas que estén en un input dentro de un formulario.

El funcionamiento que quiero es que cuando se pulsa el botón de envío quiero que me compare los casos:

Si fecha1 > fecha2 muestra un alert y no deja continuar el envió del formulario

Si fecha1 < fecha2 pasa a la siguiente función de compara horas

Si hora1 > hora2 muestra un alert y no deja continuar el envió del formulario

Si hora1 < hora2 envía los datos por POST(preferiblemente)

Pues bien, hasta el 3 caso me funciona bien, pero cuando intento incorporar el siguiente caso para que haga el envío de los datos del formulario. Todo se trastoca y aunque muestra los alerts, se envía el formulario, impidiendo que funcione el control de fechas y horas.

Aqui mi script:
Código:
<script>

function compararHora()
{
	var hora1 = document.getElementById("hora_inicio").value;
	var hora2 = document.getElementById("hora_final").value;
    var horaSep = hora1.split(':');
    var horaSep2 = hora2.split(':');

    if(horaSep > horaSep2){
		
		alert('estoy aqui');
		Alert.render('La <b>HORA FINAL</b> debe ser siempre <b>SUPERIOR</b> a la hora de inicio.');
		
    }     
		else{
			
			alert('tras este alert pasa los datos de form');
			document.forms[formulario].submit();
			
		}
 
}

function compararFecha(fecha1,fecha2)
{
	var fecha1 = document.getElementById("fecha_inicio").value;
	var fecha2 = document.getElementById("fecha_final").value;
    var fechaSep = fecha1.split('-');
    var fechaSep2 = fecha2.split('-');
    var indicada = new Date(fechaSep[0],fechaSep[1]-1,fechaSep[2]);
    var indicada2 = new Date(fechaSep2[0],fechaSep2[1]-1,fechaSep2[2]);
    if(indicada > indicada2){
		
		Alert.render('La <b>FECHA FINAL</b> debe ser siempre <b>SUPERIOR</b> a la fecha de inicio.');
		
	}else{
			alert('hola');
			compararHora();	
	}          
 }

</script>
Y aqui mi formulario:
Código:
<form id="formulario" name="formulario" action="accion.php" method="post" onsubmit="return compararFecha()" >

<input   id="fecha_inicio" name="fecha_inicio" value="" ><input  id="hora_inicio" name="hora_inicio" value="">
<input   id="fecha_final" name ="fecha_final" value="" ><input id="hora_final" name="hora_final" value="">


<label for="tags">Descripción: </label>
<input type="text" name="descripcion" id="descripcion" />


<input name="submit" type="submit" value="enviar">
</form>
Cabe decir que las fechas las recoge el input mediante otro script de un control datepicker. Y que pasar los datos los pasa bien. Pero se salta los alerts impidiendo que se ejecute el control de fechas. Vaya, no le da a los usuarios la posibilidad de darle a OK al alert y cambiar la fecha, simplemente le envia los datos directamente.

Gracias de antemano :)

Última edición por peinprats; 01/06/2017 a las 10:47
  #2 (permalink)  
Antiguo 01/06/2017, 11:14
 
Fecha de Ingreso: mayo-2012
Mensajes: 25
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Problema con formulario, validar fechas y pasar datos por action

Acabo de corregir la primera parte del script y tras ponerle
Cita:
return false;
en el if de la función compararFecha(), me muestra el alert. Pero si se lo pongo a el if de la función compararHora() no me hace el mismo efecto y sigue saltandose la condición, pasando los datos del formulario a accion.php

Código:
    if(indicada > indicada2){
		
		Alert.render('La <b>FECHA FINAL</b> debe ser siempre <b>SUPERIOR</b> a la fecha de inicio.');
		return false;
	}else{
			
			compararHora();	
	}
  #3 (permalink)  
Antiguo 05/06/2017, 01:09
 
Fecha de Ingreso: mayo-2012
Mensajes: 25
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Problema con formulario, validar fechas y pasar datos por action

Solucionado.

Colocando
Código:
 return false;
en los if, y
Código:
return true;
en los else

Luego se llama a las funciones en el formulario mediante el evento onsubmit de esta manera:

Código:
onsubmit="return compararFecha() && compararHora()"

Etiquetas: formulario, funcion, input, php, text
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 12:57.