Hola ogro, he creado una función

Para que en mi formulario me controle que no
ponga fechas erroneas como los dias
31 de algunos meses o los dias
29,30,31 de Febrero pero me no me hace
ni caso. Quisiera saber donde está el
error y si me puedes ayudar a subsanarlo pues quizas no esta bien
programado o conoces ya una funcion que
lo hace bien.
Muchísimas gracias
El codigo integro es:
<%@ page import="java.lang.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="oracle.jdbc.driver.*" %>
<%@ page import="oracle.portal.provider.v1.*" %>
<%@ page import="oracle.portal.provider.v1.http.*" %>
<script language=javascript>
function testFecha()
{
alert('1');
var res = true;
var anoBisiesto = false;
var pto_s = document.all['diaD'];
var pto_o = pto_s.options[pto_s.selectedIndex];
var dia = pto_o.value;
pto_s = document.all['mesD'];
pto_o = pto_s.options[pto_s.selectedIndex];
var mes = pto_o.value;
pto_s = document.all['anoD'];
pto_o = pto_s.options[pto_s.selectedIndex];
var ano = pto_o.value;
if ((ano%4 == 0) && ((ano%100!=0) || (ano%400==0)))
{
anoBisiesto = true;
alert('2');
}
if ((dia == 31) && ( (mes == 4) || (mes==6) || (mes==9) || (mes ==11) ))
{
alert('Fecha incorrecta: el mes no tiene 31 dias.');
res = false;
alert('3');
}
if ( (((dia > 28) && (!anoBisiesto)) || ((dia>29) && anoBisiesto)) && (mes==2) )
{
alert('Fecha incorrecta: Febrero no tiene tantos dias.');
res = false;
alert('4');
}
return res;
alert('5');
validar();
}
function validar()
{
for(i=0;i<form.length-1;i++)
{
var elemento=form.elements
if (elemento.name.charAt(0)== "x")
{
//Aqui Valida si el campo esta vacio
if (!elemento.value)
{
alert("Debe llenar todos los campos");
elemento.focus();
return false
}
}
}
//testFecha();
}
</script>
<link rel="stylesheet" href="<%=HttpPortletRendererUtil.absoluteLink(request,"../intranet.css")%>" type="text/css">
<form name="form" method="post" action="<%=HttpPortletRendererUtil.absoluteLink(request,"Enviar.jsp")%>" onsubmit="return testFecha()">
<%=HttpPortletRendererUtil.htmlFormHiddenFields(request,PortletRendererUtil.PAGE_LINK) %>
<table width="335" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="146" height="28" valign="middle" align="left" class="formularioNormal"><b>Nombre:</b></td>
<td width="189" valign="middle" align="right">
<input type="text" name="xNombre" size="35" maxlength="30">
</td>
</tr>
<tr>
<td height="28" valign="middle" align="left" class="formularioNormal"><b>Apellidos:</b></td>
<td valign="middle" align="right">
<input type="text" name="xApellidos" size="35" maxlength="50">
</td>
</tr>
<tr>
<td height="28" valign="middle" align="left" class="formularioNormal"><b>E-mail:</b></td>
<td valign="middle" align="right">
<input type="text" name="xEmail" size="35" maxlength="50">
</td>
</tr>
<tr>
<td height="28" valign="middle" align="left" class="formularioNormal"><b>Cliente:</b></td>
<td valign="middle" align="right">
<input type="text" name="Cliente" size="35" maxlength="50">
</td>
</tr>
<tr>
<td height="28" valign="middle" align="left" class="formularioNormal"><b>Proyecto:</b></td>
<td valign="middle" align="right">
<input type="text" name="Proyecto" size="35" maxlength="30">
</td>
</tr>
<tr valign="middle" align="center">
<td height="28" colspan="2" class="formularioNegrita"><b>Solicitud de Vacaciones:</b></td>
</tr>
<tr>
<td height="38" valign="middle" align="left" class="formularioNormal"><b>Desde
el día:</b></td>
<td valign="middle" class="formularioNormal" align="left">
<select id="diaD" name="xdiaDesde" size="1">
<%
for (int d=1;d<32;d++)
{
%>
<option value="<%=d%>"><%=d%></option>
<%
} //for de dias
%>
</select>
<select id="mesD" name="xmesDesde" size="1">
<option value="1" >Enero</option>
<option value="2" >Febrero</option>
<option value="3" >Marzo</option>
<option value="4" >Abril</option>
<option value="5" >Mayo</option>
<option value="6" >Junio</option>
<option value="7" >Julio</option>
<option value="8" >Agosto</option>
<option value="9" >Septiembre</option>
<option value="10" >Octubre</option>
<option value="11" >Noviembre</option>
<option value="12" >Diciembre</option>
</select>
<select id="anoD" name="xanoDesde" size="1">
<%
for (int a=2000;a<2020;a++)
{
%>
<option value="<%=a%>"><%=a%></option>
<%
} //for de años
%>
</select>
</td>
</tr>
<tr>
<td height="28" valign="middle" align="left" class="formularioNormal"><b>Hasta
el día:</b></td>
<td valign="middle" class="formularioNormal" align="left">
<select id="diaD" name="xdiaHasta" size="1">
<%
for (int...

1 respuesta

Respuesta
1
En principio la codificacion de la función de testFecha parece estar correcta. Creo que el problema viene dado por la forma que tienes de llamar a la función, ya que, si no me equivoco, al submitir va a tomar como primera referencia el ACTION del formulario y no el onSubmit. Prueba a poner el action a vacío para comprobar si funciona el testeo de fecha.
Lo he probado tio y no me ha funcionado esto
he puesto mensajes de alerta a lo largo de
la función y solo me sale alert(1) sin embargo
no me muestra nunguna mas. ¿Podrías echarle
un vistazo a la funcion, alomejor he puesto
alguna burrada?
Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas