Foros del Web » Programando para Internet » Javascript »

validar fechas

Estas en el tema de validar fechas en el foro de Javascript en Foros del Web. MI PROBLEMA ES EL SIGUIENTE: TENGO LA SIGUIENTE FUNCION PARA VALIDAR LA FECHA: <script language="JavaScript"> function esDigito(sChr){ var sCod = sChr.charCodeAt(0); return ((sCod > 47) ...
  #1 (permalink)  
Antiguo 05/11/2003, 08:39
 
Fecha de Ingreso: octubre-2003
Mensajes: 19
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta validar fechas

MI PROBLEMA ES EL SIGUIENTE:
TENGO LA SIGUIENTE FUNCION PARA VALIDAR LA FECHA:

<script language="JavaScript">

function esDigito(sChr){
var sCod = sChr.charCodeAt(0);
return ((sCod > 47) && (sCod < 58));
}

function valSep(oTxt){
var bOk = false;
bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
return bOk;
}

function finMes(oTxt){
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
var nRes = 0;
switch (nMes){
case 1: nRes = 31; break;
case 2: nRes = 29; break;
case 3: nRes = 31; break;
case 4: nRes = 30; break;
case 5: nRes = 31; break;
case 6: nRes = 30; break;
case 7: nRes = 31; break;
case 8: nRes = 31; break;
case 9: nRes = 30; break;
case 10: nRes = 31; break;
case 11: nRes = 30; break;
case 12: nRes = 31; break;
}
return nRes;
}

function valDia(oTxt){
var bOk = false;
var nDia = parseInt(oTxt.value.substr(0, 2), 10);
bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
return bOk;
}

function valMes(oTxt){
var bOk = false;
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
bOk = bOk || ((nMes >= 1) && (nMes <= 12));
return bOk;
}

function valAno(oTxt){
var bOk = true;
var nAno = oTxt.value.substr(6);
bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
if (bOk){
for (var i = 0; i < nAno.length; i++){
bOk = bOk && esDigito(nAno.charAt(i));
}
}
return bOk;
}

function valFecha(oTxt){
var bOk = true;
if (oTxt.value != ""){
bOk = bOk && (valAno(oTxt));
bOk = bOk && (valMes(oTxt));
bOk = bOk && (valDia(oTxt));
bOk = bOk && (valSep(oTxt));
if (!bOk){
alert("Fecha inválida");
oTxt.value = "";
oTxt.focus();
}
}
}
SE LAS ESCRIBI POR SI A ALGUIEN QUIERE USARLA .
BUENO EL PROBLEMA ES QUE YO QUIERO AGRAGARLE UNA PARTE EN LA QUE TAMBIEN ME VALIDE QUE PUEDA INGRESAR SOLO FECHAS A CONTAR DEL DIA EN QUE HACE EL INGRESO OSEA QUE NO PUEDA INGRESAR FECHAS INFERIORES AL DIA DE HOY.

EJ: HOY ES 5/11/03 QUE MI USUARIO NO PUEDA INGRESAR 4/11/03 NI NINGUNA OTRA FECHA ANTES DEL 5/11/03.

LES AGRADECERIA MUCHO SU AYUDITA YA QUE MIS CONOCIMIENTOS DE JAVASCRIPT SON PRECARIOS.

ATTE PAULILLA.
__________________
:adios:
  #2 (permalink)  
Antiguo 05/11/2003, 08:50
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
Cómo estas recibiendo las fechas...es decir...las recibes en el formato

variable dia= request.algo
variable mes= request.algo
variable anno = request.algo ?

porque si es asi debes agruparlas primero con el

Fecha = DateSerial(anno, mes, dia)
fechaaux= date

y luego comparas

if ( fecha < fechaaux) then

response.redirect"algo.asp "

else
lo que debas hacer

end if




PD: Todavía enojada con el profe? jajaja te descubrimos con Graff, bueno.... él



Lo tube que editar....me equivoqué en algo... ahora si está bien
__________________
Buena Vida...
Francisco

Última edición por Bluesman74cl; 05/11/2003 a las 08:53
  #3 (permalink)  
Antiguo 05/11/2003, 11:31
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
movido desde ASP
__________________
...___...
  #4 (permalink)  
Antiguo 05/11/2003, 11:47
 
Fecha de Ingreso: enero-2002
Mensajes: 1.438
Antigüedad: 22 años, 3 meses
Puntos: 0
es otra linea de trabajo, pero fijate como valido yo una fecha
con isdate y existen otrasotras funciones de fecha q tal vez hagan lo que quieres

tal vez algo del estilo if date()>Fecha then error


<%
function Cfecha (fecha)
if IsDate(Fecha) then
anho=year(fecha)
mes = month (fecha)
dia =day(fecha)
Cfecha=anho & "/" & mes & "/" & dia
Elseif (Fecha<>"") then
MM_abortEdit = "True"
%>
  #5 (permalink)  
Antiguo 05/11/2003, 13:55
 
Fecha de Ingreso: octubre-2003
Mensajes: 19
Antigüedad: 20 años, 6 meses
Puntos: 0
discupen por no saber explicarme

lo que quiero es una funcion para agregarle a las de javascript
__________________
:adios:
  #6 (permalink)  
Antiguo 06/11/2003, 06:43
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
Paulilla buscando, buscando encontré este código que Bravenap me ayudó a modificar... consta de tres input .... lo único que no me gusta es el movimiento que tienen...ando buscando cómo mantenerlos fijos.. se ve muy mal...eso de que se vayan abriendo en el browser...ojalá te sirva



<html>
<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);
break;
case 1:
nMes = parseInt(mes.options[mes.selectedIndex].value);
llenaDia(dia, nAno, nMes)
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;
}
}
}

function llenaAno(oAno){
var hoy = new Date();
var ini = hoy.getYear();
addOpt(oAno, 0, "", "");
for (var i = ini; i <= 2025; i++)
addOpt(oAno, i - ini + 1, String(i), String(i));
}

function llenaMes(oMes, nAno){
var hoy = new Date();
var nFin = 11;
while (oMes.length > 0) oMes.remove(0);
if (nAno == hoy.getYear()){empieza = hoy.getMonth();}
else {empieza=0;}
addOpt(oMes, 0, "", "");
for (var i = empieza; i <= nFin; i++)
addOpt(oMes, i + 1, aMeses[i], String(i));
}

function llenaDia(oDia, nAno, nMes){
var hoy = new Date();
var nFin = lastDayOfMonth(nMes + 1, nAno);
while (oDia.length > 0) oDia.remove(0);
if (nAno == hoy.getYear() && nMes == hoy.getMonth()){empieza = hoy.getDate();}
else{empieza=1;}
addOpt(oDia, 0, "", "");
for (var i = empieza; i <= nFin; i++)
addOpt(oDia, i + 1, String(i), String(i));
}

</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>
__________________
Buena Vida...
Francisco
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 03:04.