Foros > Javascript: problema con validacion

  1. kayserpc

    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();
    }


responder

Para poder responder a este tema tenes que ingresar. Si no tenes una cuenta podes registrarse gratis..

publicidad