Foros del Web » Programando para Internet » Javascript »

Validar o no varias fechas en formulario

Estas en el tema de Validar o no varias fechas en formulario en el foro de Javascript en Foros del Web. Buenos días a todos: Estoy trabajando en un formulario de alta de registro en el entre otras cosas, tengo que introducir una fecha obligatoriamente y ...
  #1 (permalink)  
Antiguo 03/09/2008, 05:32
Avatar de chemita59  
Fecha de Ingreso: agosto-2005
Ubicación: Madrid
Mensajes: 107
Antigüedad: 18 años, 8 meses
Puntos: 0
Validar o no varias fechas en formulario

Buenos días a todos:

Estoy trabajando en un formulario de alta de registro en el entre otras cosas, tengo que introducir una fecha obligatoriamente y otras cuatro opcionales…. Todas ellas en cajas de texto.

Busco un código que al validar el formulario me compruebe que la fecha obligatoria es correcta, y que si he introducido algún valor en las cajas de texto de las cuatro restantes me valide la fecha introducida…..

Gracias anticipadas a todos….

Salu2.
  #2 (permalink)  
Antiguo 03/09/2008, 09:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Validar o no varias fechas en formulario

Es fácil, si son solo cinco, solo necesitas validar la que es obligatoria y las demás mirar si no están vacías, y si no están validarlas también.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 03/09/2008, 12:33
Avatar de chemita59  
Fecha de Ingreso: agosto-2005
Ubicación: Madrid
Mensajes: 107
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Validar o no varias fechas en formulario

Bueno, eso ya me lo imaginaba....
Lo que pido es un poco de codigo pra salir del paso....

Salu2
  #4 (permalink)  
Antiguo 03/09/2008, 12:35
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Validar o no varias fechas en formulario

¿Ya tienes el código para validar las fechas o no?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 03/09/2008, 12:51
Avatar de chemita59  
Fecha de Ingreso: agosto-2005
Ubicación: Madrid
Mensajes: 107
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Validar o no varias fechas en formulario

quizas mi pregunta esta mal planteada....... ahora mismo no tengo el codigo que utilizo y que me da problemas... pero mañana a primera hora lo pongo......

Person por las molestias y muy agradecido por contestarme....

Salu2
  #6 (permalink)  
Antiguo 04/09/2008, 00:14
Avatar de chemita59  
Fecha de Ingreso: agosto-2005
Ubicación: Madrid
Mensajes: 107
Antigüedad: 18 años, 8 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&iacute;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">&nbsp;</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>&nbsp; </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
  #7 (permalink)  
Antiguo 04/09/2008, 07:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Validar o no varias fechas en formulario

Es que mira este código:
Código PHP:
if(valFecha(document.form_alta.FECHA1)){
                return 
true;
                }else{
                 
alert("La FECHA1 no es valida");
                 
document.form_alta.FECHA1.focus();
                  return 
false;
                } 
Cuando la fecha es correcta hace un return true con lo que sale de la función sin ejecutar el resto del código que sería la validación de la fecha opcional. No hagas el return true hasta que hayas validado todos los campos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 04/09/2008, 08:11
Avatar de chemita59  
Fecha de Ingreso: agosto-2005
Ubicación: Madrid
Mensajes: 107
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Validar o no varias fechas en formulario

Gracias David... entendido......

Prometo apuntarme al un curso de javascript que dan en mi empresa en octubre.........

Asi cuando pregunte, que sean cosas realmente importantes y no de perogrullo..

Gracias por todo....

Salu2
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 16:00.