Mensajes [2] - Enviado el Martes 18 de Marzo de 2008 a las 10:27hs
ACLARO, ES LA PRIMERA VEZ QUE MANEJO JAVA, Y ESTOY PERDIDISIMO, PERO NECESITO RESOLVER ESTO.
TENGO UN FORMULARIO EN ASP QUE VALIDA UNAS FECHAS PARA RECUPERAR LA CONTRASEÑA. LA FUNCION QUE COMPARA ESTA EN JAVASCRIPT Y EL TEMA ES QUE EN i.e. ANDA PERO EN FIREFOX NO, Y NO PUEDO ENCONTRAR EL PROBLEMA. SI ME DAN UNA MANO SE LOS VOY A AGRADECER. AQUI POSTEO EL CODIGO DE LA FUNCION PRIMERO, Y LUEGO DEL FORMULARIO ASP
FUNCIONES:
/******************************************************************************
** Compara dos fechas y devuelve TRUE si fechaMayor es mayor que fechaMenor **
******************************************************************************/
function comparaFecha(fechaMenor, fechaMayor)
{
tmpstrFecExpira = DateInputFix(fechaMayor);
tmpSplitFecExpira = tmpstrFecExpira.split("/");
dia1 = eval(tmpSplitFecExpira[0]);
mes1 = eval(tmpSplitFecExpira[1]) - 1;
ano1 = eval(tmpSplitFecExpira[2]);
fecExpira = new Date(ano1, mes1, dia1);
tmpstrFecPublic = DateInputFix(fechaMenor);
tmpSplitFecPublic = tmpstrFecPublic.split("/");
dia2 = eval(tmpSplitFecPublic[0]);
mes2 = eval(tmpSplitFecPublic[1]) - 1;
ano2 = eval(tmpSplitFecPublic[2]);
fecPublic = new Date(ano2, mes2, dia2);
difMilSeg = fecExpira - fecPublic;
if (difMilSeg >= 0)
return true;
else
return false;
}
/**********************************************
** Verifica que id_date sea una fecha válida **
**********************************************/
function isDate(id_date)
{
var tmpDate,tmpDateParts,tmpHourParts = new String;
var tmpDay,tmpMonth,tmpYear,tmpHour,tmpMinute = new Number;
var hasHour=new Boolean;
var tmpSplit=new Array;
var months=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var reDate=/^\d+\/\d+\/\d+$/;
var reHour=/^\d+:\d+$/;
tmpDate=DateInputFix(id_date);
tmpSplit=tmpDate.split(" ");
switch(tmpSplit.length)
{
case 1:
hasHour=false;
break;
case 2:
hasHour=true;
break;
default:
return(false);
}
if (!reDate.test(tmpSplit[0])) { return(false); }
tmpDateParts=tmpSplit[0].split("/");'modifique
if (hasHour==true)
{
if (!reHour.test(tmpSplit[1])) { return(false); }
tmpHourParts=tmpSplit[1].split(":");
tmpHour=parseInt(tmpHourParts[0],10);
tmpMinute=parseInt(tmpHourParts[1],10);
if (tmpHour<0 || tmpHour>24 || tmpMinute<0 || tmpMinute>59) { return(false); }
}
tmpDay=parseInt(tmpDateParts[0],10);
tmpMonth=parseInt(tmpDateParts[1],10);
tmpYear=parseInt(tmpDateParts[2],10);
if (tmpMonth<1 || tmpMonth>12 || tmpDay>31 || tmpDay<1) { return(false); }
if (tmpDateParts[2].length != 4) { return(false); }
if ((tmpYear % 4==0 && tmpYear % 100!=0) || tmpYear % 400==0) { months[1]=29; }
if (tmpDay>months[tmpMonth-1]) { return(false); }
if (tmpYear > 9999) { return(false); }
return(true);
}
/*********************************************
** Devuelve una fecha con barras divisorias **
*********************************************/
function DateInputFix(df_date)
{
df_date=df_date.replace(/ +/g," ");
df_date=df_date.replace(/^ /,"");
df_date=df_date.replace(/ $/,"");
df_date=df_date.replace(/ *\/ */g,"/");
df_date=df_date.replace(/ *: */,":");
return(df_date);
}
AHORA VA EL FORMULARIO ASP:
----------------------------------------------------------------------------------------------------------------------------
<html>
<head>
<title>PRUEBA</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="/styles/styles.css">
</head>
<SCRIPT language="javascript" src="/include/funciones.js">
</SCRIPT>
<SCRIPT language="javascript">
function validar(){
var hoy = new Date();
var f;
var strHoy;
strHoy = hoy.getYear() + "-" + (hoy.getMonth()+1) + "-" + hoy.getDate()
f = document.form1.ano.options[document.form1.ano.selectedIndex].value + "/" + document.form1.mes.options[document.form1.mes.selectedIndex].value + "/" + document.form1.Dia.options[document.form1.Dia.selectedIndex].value
if (!(isDate(f))){
alert("Ingrese una fecha de nacimiento válida");
return;
}
else{
if(!(comparaFecha(f, strHoy))){
alert("La fecha de nacimiento es incorrecta"); AQUI DA EL ERROR
return;
}
}
if (trim_string(document.form1.textfield.value) == ""){
alert("Debe llenar todos los datos del formulario");
return;
}
if (trim_string(document.form1.textfield2.value) == "") {
alert("Debe llenar todos los datos del formulario");
return;
}
if (document.form1.textfield.value.length < 3 ){
alert("Debe completar al menos 3 caracteres del nombre");
return;
}
if (document.form1.textfield2.value.length < 3){
alert("Debe completar al menos 3 caracteres del apellido");
return;
}
document.form1.submit();
}