Pasar nombre del campo como variable
Necesito hacer un validador, tengo dos campos (de fecha) llamados fech1 y fech2
y una función que valida la fecha en el evento OnClick del botón submit, ¿cómo puedo pasar los nombre de campo de los campos de fecha para que la función me los tome?
Envío el HTML
<html>
<head>
<title>Validador de fechas en caja de texto</title>
<script language="JavaScript" type="text/javascript">
/**
* definimos las variables globales que van a contener la fecha completa, cada una de sus partes
* y los dias correspondientes al mes de febrero segun sea el año bisiesto o no
*/
var a, mes, dia, anyo, febrero;
/**
* funcion para comprobar si una año es bisiesto
* argumento anyo > año extraido de la fecha introducida por el usuario
*/
function anyoBisiesto(anyo){
/**
* si el año introducido es de dos cifras lo pasamos al periodo de 1900. Ejemplo: 25 > 1925
*/
if (anyo < 100)
var fin = anyo + 1900;
else
var fin = anyo ;
/*
* primera condicion: si el resto de dividir el año entre 4 no es cero > el año no es bisiesto
* es decir, obtenemos año modulo 4, teniendo que cumplirse anyo mod(4)=0 para bisiesto
*/
if (fin % 4 != 0)
return false;
else{
if (fin % 100 == 0){
/**
* si el año es divisible por 4 y por 100 y divisible por 400 > es bisiesto
*/
if (fin % 400 == 0){
return true;
}
/**
* si es divisible por 4 y por 100 pero no lo es por 400 > no es bisiesto
*/
else{
return false;
}
}
/**
* si es divisible por 4 y no es divisible por 100 > el año es bisiesto
*/
else{
return true;
}
}
}
/**
* funcion principal de validacion de la fecha
* argumento fecha > cadena de texto de la fecha introducida por el usuario
*/
function validar(campo){
/**
* obtenemos la fecha introducida y la separamos en dia, mes y año
*/
alert(campo);
if (campo == 'fech1'){
a=document.form1.fech1.value;
}else{
a=document.form1.fech2.value;
}
dia=a.split("/")[0];
mes=a.split("/")[1];
anyo=a.split("/")[2];
if(anyoBisiesto(anyo))
febrero=29;
else
febrero=28;
/**
* si el mes introducido es negativo, 0 o mayor que 12 > alertamos y detenemos ejecucion
*/
if ((mes<1) || (mes>12)){
alert("El mes introducido no es válido. Por favor, introduzca un mes correcto");
document.forms[0].campo.focus();
document.forms[0].campo.select();
return;
}
/**
* Si el mes introducido es febrero y el día es mayor que el correspondiente
* al año introducido > alertamos y detenemos ejecución
*/
if ((mes==2) && ((dia<1) || (dia>febrero))){
alert("El día introducido no es válido. Por favor, introduzca un día correcto");
document.forms[0].campo.focus();
document.forms[0].campo.select();
return;
}
/**
* Si el mes introducido es de 31 días y el día introducido es mayor de 31 > alertamos y detenemos ejecución
*/
if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31))){
alert("El día introducido no es válido. Por favor, introduzca un día correcto");
document.forms[0].campo.focus();
document.forms[0].campo.select();
return;
}
/**
* Si el mes introducido es de 30 días y el día introducido es mayor de 301 > alertamos y detenemos ejecución
*/
if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30))){
alert("El día introducido no es válido. Por favor, introduzca un día correcto");
document.forms[0].campo.focus();
document.forms[0].campo.select();
return;
}
/**
* Si el mes año introducido es menor que 1900 o mayor que 2010 > alertamos y detenemos ejecución
* NOTA: estos valores son a eleccion vuestra, y no constituyen por si solos fecha erronea
*/
if ((anyo<1900) || (anyo>2010)){
alert("El año introducido no es válido. Por favor, introduzca un año entre 1900 y 2010");
document.forms[0].campo.focus();
document.forms[0].campo.select();
}
/**
* En caso de que todo sea correcto > enviamos los datos del formulario
* para ello debéis descomentar la ultima sentencia
*/
else
//alert("La fecha introducida es correcta. Gracias por su colaboración");
document.forms[0].submit();
}
</script>
</head>
<body bgcolor="#ffff99">
<center>
<p style="font-size:12px;font-family:Verdana,Helvetica;">Introduzca una fecha en formato dd/mm/aaaa:</p>
<form name="form1" action="">
<input type="text" name="fech1" size="9" maxlength="10" onblur="validar(document.form1.fech1.name);"><br><br>
<input type="text" name="fech2" size="9" maxlength="10" onblur="validar(document.form1.fech2.name);"><br><br>
<input type="button" name="envio" value="enviar">
</form>
</center>
</body>
</html>
y una función que valida la fecha en el evento OnClick del botón submit, ¿cómo puedo pasar los nombre de campo de los campos de fecha para que la función me los tome?
Envío el HTML
<html>
<head>
<title>Validador de fechas en caja de texto</title>
<script language="JavaScript" type="text/javascript">
/**
* definimos las variables globales que van a contener la fecha completa, cada una de sus partes
* y los dias correspondientes al mes de febrero segun sea el año bisiesto o no
*/
var a, mes, dia, anyo, febrero;
/**
* funcion para comprobar si una año es bisiesto
* argumento anyo > año extraido de la fecha introducida por el usuario
*/
function anyoBisiesto(anyo){
/**
* si el año introducido es de dos cifras lo pasamos al periodo de 1900. Ejemplo: 25 > 1925
*/
if (anyo < 100)
var fin = anyo + 1900;
else
var fin = anyo ;
/*
* primera condicion: si el resto de dividir el año entre 4 no es cero > el año no es bisiesto
* es decir, obtenemos año modulo 4, teniendo que cumplirse anyo mod(4)=0 para bisiesto
*/
if (fin % 4 != 0)
return false;
else{
if (fin % 100 == 0){
/**
* si el año es divisible por 4 y por 100 y divisible por 400 > es bisiesto
*/
if (fin % 400 == 0){
return true;
}
/**
* si es divisible por 4 y por 100 pero no lo es por 400 > no es bisiesto
*/
else{
return false;
}
}
/**
* si es divisible por 4 y no es divisible por 100 > el año es bisiesto
*/
else{
return true;
}
}
}
/**
* funcion principal de validacion de la fecha
* argumento fecha > cadena de texto de la fecha introducida por el usuario
*/
function validar(campo){
/**
* obtenemos la fecha introducida y la separamos en dia, mes y año
*/
alert(campo);
if (campo == 'fech1'){
a=document.form1.fech1.value;
}else{
a=document.form1.fech2.value;
}
dia=a.split("/")[0];
mes=a.split("/")[1];
anyo=a.split("/")[2];
if(anyoBisiesto(anyo))
febrero=29;
else
febrero=28;
/**
* si el mes introducido es negativo, 0 o mayor que 12 > alertamos y detenemos ejecucion
*/
if ((mes<1) || (mes>12)){
alert("El mes introducido no es válido. Por favor, introduzca un mes correcto");
document.forms[0].campo.focus();
document.forms[0].campo.select();
return;
}
/**
* Si el mes introducido es febrero y el día es mayor que el correspondiente
* al año introducido > alertamos y detenemos ejecución
*/
if ((mes==2) && ((dia<1) || (dia>febrero))){
alert("El día introducido no es válido. Por favor, introduzca un día correcto");
document.forms[0].campo.focus();
document.forms[0].campo.select();
return;
}
/**
* Si el mes introducido es de 31 días y el día introducido es mayor de 31 > alertamos y detenemos ejecución
*/
if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31))){
alert("El día introducido no es válido. Por favor, introduzca un día correcto");
document.forms[0].campo.focus();
document.forms[0].campo.select();
return;
}
/**
* Si el mes introducido es de 30 días y el día introducido es mayor de 301 > alertamos y detenemos ejecución
*/
if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30))){
alert("El día introducido no es válido. Por favor, introduzca un día correcto");
document.forms[0].campo.focus();
document.forms[0].campo.select();
return;
}
/**
* Si el mes año introducido es menor que 1900 o mayor que 2010 > alertamos y detenemos ejecución
* NOTA: estos valores son a eleccion vuestra, y no constituyen por si solos fecha erronea
*/
if ((anyo<1900) || (anyo>2010)){
alert("El año introducido no es válido. Por favor, introduzca un año entre 1900 y 2010");
document.forms[0].campo.focus();
document.forms[0].campo.select();
}
/**
* En caso de que todo sea correcto > enviamos los datos del formulario
* para ello debéis descomentar la ultima sentencia
*/
else
//alert("La fecha introducida es correcta. Gracias por su colaboración");
document.forms[0].submit();
}
</script>
</head>
<body bgcolor="#ffff99">
<center>
<p style="font-size:12px;font-family:Verdana,Helvetica;">Introduzca una fecha en formato dd/mm/aaaa:</p>
<form name="form1" action="">
<input type="text" name="fech1" size="9" maxlength="10" onblur="validar(document.form1.fech1.name);"><br><br>
<input type="text" name="fech2" size="9" maxlength="10" onblur="validar(document.form1.fech2.name);"><br><br>
<input type="button" name="envio" value="enviar">
</form>
</center>
</body>
</html>
1 respuesta
Respuesta de gandalf26
1