Foros del Web » Programando para Internet » Javascript »

permitir campo imagen vacio

Estas en el tema de permitir campo imagen vacio en el foro de Javascript en Foros del Web. Hola: Tengo un par de problemillas. Tengo este código, va perfecto, valida que sea una imagen con un determinado formato y si es correcto, envía ...
  #1 (permalink)  
Antiguo 02/02/2012, 14:48
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 2
Pregunta permitir campo imagen vacio

Hola:

Tengo un par de problemillas. Tengo este código, va perfecto, valida que sea una imagen con un determinado formato y si es correcto, envía el formulario. Lo que yo quisiera es que lo validara sólo si existe la imagen, es decir, que si al usuario no le apetece o no tiene foto en ese momento, pueda enviar el formulario igual, aunque sin foto, pero no puedo, he intentado modificarlo pero no me termina de salir. Creo que tiene que ser algo muy sencillo, pero estoy un poco atascada. Por otra parte, también me gustaría que no permitiera imágenes mayores de 100kb, tengo la limitación hecha en php (por el lado del servidor), pero me gustaría también, si se puede, limitarlo por javascript, ¿es posible hacerlo?, ¿cómo sería?. Un saludo muy grande y gracias de antemano. Mi código (ojo, sólo he puesto lo imprescindible para mis preguntas, poner más me parece un poco absurdo, por eso, si hay alguna incongruencia con los cierres y eso, que no se alarme nadie, jeje):
Código PHP:
<html>
<head>
<script>
function comprueba_extension(formulario, archivo) { 
   extensiones_permitidas = new Array(".gif", ".jpg", ".jpeg", ".png"); 
   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[i] == 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(); 
       }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; 



</script>
</head>

<body class="fondoregistro">
<form action="registro.php" method="post" enctype="multipart/form-data"  name="formulario" id="formulario">
  <table width="1024" height="768" border="0">
    <tr>
      <td width="304" height="768"><table width="100%" height="618" border="0">
        <tr>
          <td height="350" colspan="2"><img src="images/cancelar.png" alt="" width="<?php if($error_img=='error'){echo '60';}else{echo '0';} ?>" height="<?php if($error_img=='error'){echo '60';}else{echo '0';} ?>" class="xsubir" /></td>
        </tr>
        <tr>
          <td width="84%" height="46">
          <label for="imagen"></label>
            <input name="imagen" type="file" class="subirfoto"  id="imagen" value="<?php echo $_FILES['imagen']['tmp_name']; ?>" size="12" />
            
            </td>
          <td width="16%"><input name="button" type="submit" onclick="comprueba_extension(this.form, this.form.imagen.value)" class="botonenvio" id="button" value="Enviar" /></td>
        </tr>
        <tr>
          <td height="148" colspan="2"><span class="style2"><?php echo $error?></span></td>
        </tr>
      </table></td>
     </form>
</body>
</html>
  #2 (permalink)  
Antiguo 02/02/2012, 16:41
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: permitir campo imagen vacio

primero un formulario se envía con un botón submit
segundo para que el formulario pueda ser enviado tanto si el control tiene contenido como no, primero has de declarar como true que el campo esté vació y después el resto de validaciones.
para saber el tamaño de una imagen antes de subirla
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 02/02/2012, 23:00
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: permitir campo imagen vacio

Ya sé que debería ser con submit, probé de esa manera, pero no me funciona el javascripr, no salta el alert, tal y como lo tengo, sí. Probé también con declarar el campo vació y que se retornara true, pero lo tengo que hacer mal porque no salta el alert del javascript.
  #4 (permalink)  
Antiguo 03/02/2012, 01:52
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: permitir campo imagen vacio

Bueno, finalmente, lo que tenía era un error tonto con lo de return true, puse ="", en vez de =="" que sería lo correcto. Pero quisiera preguntarte por lo que me has comentado del submit. He probado a poner tanto en el botón de envío como luego en el form:
Código PHP:
onsubmit="comprueba_extension(this.form, this.form.imagen.value)" 
,también he probado
Código PHP:
onsubmit="return comprueba_extension(this.form, this.form.imagen.value)" 
y por último
Código PHP:
onsubmit="return (comprueba_extension(this.form, this.form.imagen.value))" 
. Y algunas cuantas más. Ninguna me funciona. Por otra parte, ¿cómo limito el peso de la foto?, ¿adaptando la función de datosde Imagen de la página que me has mostrado?. Lo digo porque recuerdo haber leido algo sobre la restricción de tamaño que no requería función. Gracias

Etiquetas: campovacio, imágen+java, validar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:20.