Problema con validación de formulario

Tengo un formulario como varios campos nombre, apellido y una imagen tengo que validar la extensión y utilizo esta función
function comprueba_extension(formulario, archivo) {
   extensiones_permitidas = new Array(".gif", ".jpg");
   mierror = "";
   if (!archivo) {
      //Si no tengo archivo, es que no se ha seleccionado un archivo en el formulario
       mierror = "No has seleccionado ningún archivo";
   }else{
      //recupero la extensión de este nombre de archivo
      extension = (archivo.substring(archivo.lastIndexOf("."))).toLowerCase();
      //alert (extension);
      //compruebo si la extensión está entre las permitidas
      permitida = false;
      for (var i = 0; i < extensiones_permitidas.length; i++) {
         if (extensiones_permitidas == extension) {
         permitida = true;
         break;
         }
          }
      if (!permitida) {
         mierror = "Comprueba la extensión de los archivos a subir. \nSólo se pueden subir archivos con extensiones: " + extensiones_permitidas.join();
         formulario.userfile.focus();
         }else{
          //submito!
         alert ("Todo correcto. Voy a submitir el formulario.");
         formulario.submit();
         return 1;
       }
   }
   //si estoy aqui es que no se ha podido submitir
   alert (mierror);
   return 0;
}
y este el formulario
form action="formulario2.php" name="myform"  enctype="multipart/form-data"  method="post">
<table cellspacing="2" cellpadding="2" border="0">
<tr>
<td align="right">Titulo</td>
<td><input type="text" name="titulo"></td>
</tr>
<tr>
<td align="right">autor</td>
<td><input type="text" name="autor"></td>
</tr>
<tr>
<td align="right">Imagen</td>
<td><input type="file" name="userfile" ></td>
</tr>
<td><input type="submit" value="Enviar" onclick="comprueba_extension(this.form, this.form.userfile.value)"></td>
</tr>
</table>
Pero el problema es que si la extensión del archivo no es la perimida de todas manera me envía al formulario2y necesito que se posicione en el campo userfile que esta mal
Gracias

1 Respuesta

Respuesta
1
for (var i = 0; i < extensiones_permitidas.length; i++) {
         if (extensiones_permitidas == extension) {
             permitida = true;
             break;
         }
}
Si te fijas el if no hace la comparacion correctamente, debes poner:
Extensiones_permitidas para que recorra el array y compara con la extensión introducida luego queda así:
for (var i = 0; i < extensiones_permitidas.length; i++) {
         if (extensiones_permitidas == extension) {
             permitida = true;
             break;
         }
}
Muchas gracias por tu ayuda, pero me podrías explicar mejor en que parte de if esta el error . y que es lo que debo cambiar es que veo la corrección y no encuentro la diferencia en el for con el que ya tengo.
Cierto, he copiado el trozo incorrecto dos veces =P
Tienes que poner esto: extensiones_permitidas así cada vuelta del bucle comparas con el contenido de la lista de extensiones, todo completo queda así:
for (var i = 0; i < extensiones_permitidas.length; i++) {
         if (extensiones_permitidas == extension) {
             permitida = true;
             break;
         }
}
Disculpa la metedura de pata =P
Gracias por tu ayuda pero sigue estando igual tu respuesta no se si al enviar el mensaje no se impriman algunos caracteres
Tengo ese error en varios for y por eso no me sirven varias funciones
Que cosa más rara parece que no pilla los corchetes y me pone el texto encursiva =P
no problema, te lo paso en foto jejj
http://wii.110mb.com/img/bucle_for.gif
Por si las moscas te incluyo también el link -> aquí
Nada que no rula lo intento de nuevo:
http://autoclick.heliohost.org/cap/bucle_for.gif

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas