Hola a ver sin me consigo explicar porque llevo buscando toda la mañana la manera de hacerlo y nada.
Lo que quiero es lo siguiente: utilizar el script del faq 237 (genial por cierto) pero haciendo que en vez de mostrar por defecto la fecha actual muestre los tres selects con value="" o algo del estilo a:
Código PHP:
<select name='ano'>
<option value=''>Seleccione un día</option>
</select>
<select name='mes'>
<option value=''>Seleccione un Mes</option>
</select>
<select name='dia'>
<option value=''>Seleccione un Año</option>
</select>
es para despues poder validar que el usuario realmente a seleccionado su fecha de nacimiento y no que simplemente ha dado al submit con la fecha sin tocar es decir con la fecha de hoy.
2. pregunta.
Se puede hacer que el mismo script en vez de cojer las fechas desde 1960 hasta el dia de hoy, solo permita seleccionar una fecha entre 1918 y 1990, digamos asegurarse que la persona tiene entre 18 años y 90 años .
Desde ya muchas gracias.
El script:
Código PHP:
<head>
<script language="JavaScript">
var aMeses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")
function padNmb(nStr, nLen, sChr){
var sRes = String(nStr);
for (var i = 0; i < nLen - String(nStr).length; i++)
sRes = sChr + sRes;
return sRes;
}
function makeDateFormat(nDay, nMonth, nYear){
var sRes;
sRes = padNmb(nDay, 2, "0") + "/" + padNmb(nMonth, 2, "0") + "/" + padNmb(nYear, 4, "0");
return sRes;
}
function addOpt(oCntrl, iPos, sTxt, sVal){
var selOpcion = new Option(sTxt, sVal);
oCntrl.options.add(selOpcion, iPos);
}
function lastDayOfMonth(nMonth, nYear){
var aMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if ((nMonth == 2) && (nYear % 4 == 0))
return 29;
else
return aMonth[nMonth - 1];
}
function cambia(nCambiado){
var nAno;
var nMes;
with (document.frm){
nAno = parseInt(ano.options[ano.selectedIndex].value);
switch (nCambiado){
case 0:
llenaMes(mes, nAno);
nMes = parseInt(mes.options[mes.selectedIndex].value);
nDia = parseInt(dia.options[dia.selectedIndex].value);
res.value = makeDateFormat(nDia, nMes + 1, nAno);
break;
case 1:
nMes = parseInt(mes.options[mes.selectedIndex].value);
llenaDia(dia, nAno, nMes);
nDia = parseInt(dia.options[dia.selectedIndex].value);
res.value = makeDateFormat(nDia, nMes + 1, nAno);
break;
case 2:
nMes = parseInt(mes.options[mes.selectedIndex].value);
nDia = parseInt(dia.options[dia.selectedIndex].value);
res.value = makeDateFormat(nDia, nMes + 1, nAno);
break;
case 3:
llenaMes(mes, nAno);
break;
}
}
}
function llenaAno(oAno){
var hoy = new Date();
var ini = 1960;
for (var i = ini; i <= hoy.getYear(); i++)
addOpt(oAno, i - ini, String(i), String(i));
oAno.options[i-ini-1].selected = true;
cambia(3);
}
function llenaMes(oMes, nAno){
var hoy = new Date();
var sel=0;
if(oMes.selectedIndex >=0) var sel=oMes.selectedIndex;
var nFin = 11;
while (oMes.length > 0) oMes.remove(0);
if (nAno == hoy.getYear())
{
nFin = hoy.getMonth();
}
if (sel>nFin)
{
sel=nFin-1;
}
for (var i = 0; i <= nFin; i++)
addOpt(oMes, i, aMeses[i], String(i));
oMes.options[sel].selected = true;
cambia(1);
}
function llenaDia(oDia, nAno, nMes){
var hoy = new Date();
var sel=0;
if(oDia.selectedIndex >=0) var sel=oDia.selectedIndex;
var nFin = lastDayOfMonth(nMes + 1, nAno);
while (oDia.length > 0) oDia.remove(0);
if (nAno == hoy.getYear() && nMes == hoy.getMonth())
{
nFin = hoy.getDate();
}
if(sel>nFin)
{
sel=nFin-1;
}
for (var i = 1; i <= nFin; i++)
addOpt(oDia, i, String(i), String(i));
oDia.options[sel].selected = true;
}
</script>
</head>
<body onload=" llenaAno(document.frm.ano)">
<form name="frm">
<table border="0">
<tr>
<td align="right">
Año:
</td>
<td>
<select name="ano" onchange="cambia(0)" style="width: 80">
</select>
</td>
</tr>
<tr>
<td align="right">
Mes:
</td>
<td>
<select name="mes" onchange="cambia(1)" style="width: 80">
</select>
</td>
</tr>
<tr>
<td align="right">
Día:
</td>
<td>
<select name="dia" onchange="cambia(2)" style="width: 80">
</select>
</td>
</tr>
<tr>
<td align="right">
Fecha:
</td>
<td>
<input type="text" name="res" disabled>
</td>
</tr>
</table>
</form>
</body>
</html>