Ayuda con formulario, validar fechas y pasar datos por evento onsubmit
Publicado por pedro (4 intervenciones) el 02/06/2017 13:48:55
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:
Y aqui el formulario:
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 envía los datos directamente.
Tengo una media solución, al incluir
dentro de los if de las funciones y después de los alerts, me muestra solo el primer alert, de las fechas. El de las horas simplemente lo muestras, pero se lo salta, enviando los datos del formulario, y dejando escapar el onsubmit
Alguna idea?
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<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 el formulario:
1
2
3
4
5
6
7
8
9
10
11
12
<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 envía los datos directamente.
Tengo una media solución, al incluir
1
return false;
Alguna idea?
Valora esta pregunta
0