04/09/2008, 00:14
|
| | | Fecha de Ingreso: agosto-2005 Ubicación: Madrid
Mensajes: 107
Antigüedad: 19 años, 4 meses Puntos: 0 | |
Respuesta: Validar o no varias fechas en formulario Buenos días a todos:
Aquí pongo el código que no funciona en la validación de fechas, a ver quien me puede ayudar para detectar el error y que funcione:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
<script language="JavaScript" >
//************************************************** ************************************************** ***********************
// FUNCION PARA VALIDACION DE CAJAS DE TEXTO DE FECHAS
//************************************************** ************************************************** ***********************
function esDigito(sChr){
var sCod = sChr.charCodeAt(0);
return ((sCod > 47) && (sCod < 58));
}
function valSep(oTxt){
var bOk = false;
var sep1 = oTxt.value.charAt(2);
var sep2 = oTxt.value.charAt(5);
bOk = bOk || ((sep1 == "-") && (sep2 == "-"));
bOk = bOk || ((sep1 == "/") && (sep2 == "/"));
return bOk;
}
function finMes(oTxt){
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
var nAno = parseInt(oTxt.value.substr(6), 10);
var nRes = 0;
switch (nMes){
case 1: nRes = 31; break;
case 2: nRes = 28; 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 + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
}
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();
return false;
} else //alert("Fecha correcta");
oTxt.focus();
return true;
}
}
//************************************************** ************************************************** ************************
// FIN DE FUNCION DE VALIDACION DE CAJAS DE TEXTO DE FECHAS
//************************************************** ************************************************** ************************
function valida_alta(){ // FUNCION DE VALIDACION DEL FORMULARIO DE ALTA
// VALIDO LA FECHA OBLIGATORIA
if (document.form_alta.FECHA1.value.length==0){
alert('El campo FECHA1 esta VACIO');
document.form_alta.FECHA1.focus();
return false;
}else{
if(valFecha(document.form_alta.FECHA1)){
return true;
}else{
alert("La FECHA1 no es valida");
document.form_alta.FECHA1.focus();
return false;
}
}
// VALIDO LA FECHA OPCIONAL
if (document.form_alta.FECHA2.value.length==0){
// NO HAGO NADA
return true;
}else{
if(valFecha(document.form_alta.FECHA2)){
return true;
}else{
alert("La FECHA2 no es valida");
document.form_alta.FECHA2.focus();
return false;
}
}
}
</script>
</head>
<body>
<table width="612" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr>
<td width="10" height="195"> </td>
<td width="602" valign="top"><form id="form_alta" name="form_alta" method="post" action="" onsubmit="valida_alta()">
<p>Primera fecha a validar:
<label>
<input name="FECHA1" type="text" id="FECHA1" />
</label>
(1) Esta fecha es obligatoria
</p>
<p>Segunda fecha a validar:
<label>
<input type="text" name="FECHA2" />
</label>
(2) Esta fecha es opcional </p>
<p>
<label>
<input type="submit" name="Submit" value="Enviar" />
</label>
</p>
<p> </p>
</form>
</td>
</tr>
</table>
</body>
</html>
Entiendo que la funcion " function valFecha(oTxt)", deberia validarme los dos campos de texto, pero no lo hace.. solo valida el primer campo (FECHA1).
Gracias a todos.
Salu2 |