Funcion para validar formulario en Firefox no funciona

Iniciado por Crash_RPM, 5 Agosto 2014, 18:25 PM

0 Miembros y 1 Visitante están viendo este tema.

Crash_RPM

Tengo un formulario que se valida mediante una llamada a una funcion javascript a traves de onsubmit.
Una vez validado, si devuelve un true se insertan los datos en la BD a traves del action.

El tema es que todo esto funciona perfectamente en Google Chrome pero no se porque en Firefox directamente inserta en la BD sin hacer la comprobacion.

Os muestro el codigo del formulario:

Código (html4strict) [Seleccionar]


<form enctype="multipart/form-data" method="POST" action="insertar_bd.php" name="formulario" class="formulario" onsubmit="return validarEvento('evento');">

<?php
        
if($tipo == "eventos")
       
{?>

.
.Varios campos del formulario
.
<div class="error" id="error" style="width:600px">

</div>

<div class="error" id="error" style="width:600px">

</div>
       <div id="loadingFiesta" style='display:none;'> <div style='text-align:center;padding-bottom: 2px;color:grey;font-weight:bold;'> Subiendo imágenes al servidor, espere un momento</div> <div style='text-align:center;'> <img src='img/diseno/generales/loading2.gif' alt='loading' style='margin-top:2px;text-align:center;' /></div></div>
       <input type="hidden" value="eventos" id="tipo" name="tipo" />
       <input type="submit" value="Enviar" id="bEvento" class="button"  />

       <?php
}
    else{

    }
?>


   <?php
    
//Por si venimos de un error
    
if(isset($_POST['error']))
                echo 
"<br/><br/><p style='color:brown'> $error; </p>";

            
?>

       </form>


La funcion de validarEvento es esta:

Código (javascript) [Seleccionar]


function validarEvento(tipo)
{
   var valido = true;
   var error = "";

   if(tipo != 'fotos')
   {
       if(document.formulario.titulo.value ==  '')
       {
           error = error + "* Error, introduzca el nombre o descripción del evento <br/>";
           valido =  false;
       }


   //validar fecha
   var f = new Date()
   var año = f.getFullYear();
   var mes = f.getMonth()+1;
   var dia = f.getDate();
   if(document.formulario.dia.value == '0' || document.formulario.año.value == '0' || document.formulario.mes.value == '0')
   {
       error = error + "* Error, introduzca una fecha correcta. <br/>";
       valido =  false;
   }
   else if(tipo == 'evento')
   {
       var aux = document.formulario;
       aceptado = true;
       if(aux.año.value > año)
           aceptado = false;
       else if(aux.año.value == año)
       {
           if(aux.mes.value > mes)
               aceptado = false;
           else if(aux.mes.value == mes)
           {
               if(aux.dia.value > dia)
                   aceptado = false;
           }
       }
       if(aceptado == false)
       {
           error = error + "* Fecha errónea. Si quiere insertar un evento futuro vaya a la sección de Próximos Eventos, en caso contrario introduzca una fecha anterior  a la actual.. <br/>";
           valido =  false;
       }
   }
   else
   {
       var aux = document.formulario;
       aceptado = true;
       if(aux.año.value < año)
           aceptado = false;
       else if(aux.año.value == año)
       {
           if(aux.mes.value < mes)
               aceptado = false;
           else if(aux.mes.value == mes)
           {
               if(aux.dia.value < dia)
                   aceptado = false;
           }
       }
       if(aceptado == false)
       {
           error = error + "* Error, la fecha introducida ya ha pasado. <br/>";
           valido =  false;
       }
   }
}


   if(document.formulario.imagen.value == '')
   {
       error = error + "* Error, debe introducir alguna imagen <br/>";
       valido =  false;
   }




   if(document.getElementById("tipo2") != 'prox' && document.getElementById("lbl_imagen2") != null)
   {
       //Verifica si hay 2 imagenes con el mismo nombre
       if(document.getElementById("lbl_imagen2").style.display == "block"  && document.getElementById("imagen2").value != "")
       {
           var tam = 2;
            for(tam = 2; document.getElementById("lbl_imagen"+tam).style.display == "block" && document.getElementById("imagen"+tam).value != "";tam++);


           if(document.formulario.imagen.value == document.getElementById("imagen2").value)
           {
               error = error + "* Error al insertar imágenes, hay 2  con el mismo nombre <br/>";
               valido =  false;
               flag = true;
           }
           else
           {
               var flag = false;
               for(i=2;i<tam && flag == false;i++)
               {
                   if(document.formulario.imagen.value == document.getElementById("imagen"+i).value)
                   {
                       error = error + "* Error al insertar imágenes, hay 2 con el mismo nombre <br/>";
                       valido =  false;
                       flag = true;
                   }
                   for(j=i+1;j<=tam && flag == false;j++)
                   {


                       if(document.formulario.imagen.value == document.getElementById("imagen"+j).value)
                       {
                           error = error + "* Error al insertar imágenes, hay 2  con el mismo nombre <br/>";
                           valido =  false;
                           flag = true
                       }
                       else if(document.getElementById("imagen"+i).value == document.getElementById("imagen"+j).value)
                       {
                           error = error + "* Error al insertar imágenes, hay 2 con el mismo nombre <br/>";
                           valido =  false;
                           flag = true
                       }
                   }
               }
           }
       }
   }


MinusFour

¿No te tira ningún error la consola de Firefox?

Crash_RPM

Cita de: MinusFour en  5 Agosto 2014, 21:51 PM
¿No te tira ningún error la consola de Firefox?

Nunca habia utilizado la consola, estos son los mensajes que me dan al insertar desde el formulario.

ReferenceError: validarEvento is not defined eventos:1
SyntaxError: illegal character funciones.js:80
La codificación de caracteres del documento HTML no ha sido declarada. El documento se mostrará con texto "basura" en algunas configuraciones de navegador si el documento contiene caracteres externos al rango US-ASCII. La codificación de caracteres de la página debe ser declarada en el documento o en el protocolo de transferencia. insertar_bd.php
SyntaxError: invalid range in character class funciones.js:337
Cadena vacía pasada a getElementById(). redirigir.php:63
El uso de getAttributeNodeNS() está desaprobado. Use en su lugar getAttributeNS(). overlay.js:477
El uso de getAttributeNodeNS() está desaprobado. Use en su lugar getAttributeNS(). overlay.js:477


MinusFour

Por el SyntaxError que te tira ahi, puede ser un problema de encoding, ¿Estás guardando el archivo que contiene el javascript bajo UTF-8?

Tambien declara el documento html con UTF-8 en el <head>.

Código (HTML4Strict) [Seleccionar]
<meta charset="UTF-8">

Crash_RPM

#4
El javascript no se de que manera esta guardado, he generado uno nuevo con codificacion UTF-8 y lo he copiado todo pero sigue igual.

Tambien he revisado el html que tiene el formulario y tiene
Código (html4strict) [Seleccionar]
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>

MinusFour

¿Esto es todo el código? Siento que el javascript está haciendo conflicto con otro archivo o no está siendo llamado correctamente.

#!drvy

Hola, vengo a decirte que... quites esa horrible ñ del codigo javascript..

Cita de: http://javascript.crockford.com/code.htmlNames should be formed from the 26 upper and lower case letters (A .. Z, a .. z), the 10 digits (0 .. 9), and _ (underbar). Avoid use of international characters because they may not read well or be understood everywhere.

Saludos