Foros del Web » Programando para Internet » Javascript »

Poner vacío campo file

Estas en el tema de Poner vacío campo file en el foro de Javascript en Foros del Web. Hola Estoy usando este script para permitir sólo archivos .jpg Código: <script language="JavaScript" type="text/javascript"> function LimitAttach(tField,iType) { file=tField.value; extArray = new Array(".jpg"); allowSubmit = false; ...
  #1 (permalink)  
Antiguo 20/02/2006, 16:29
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 21 años, 5 meses
Puntos: 0
Poner vacío campo file

Hola

Estoy usando este script para permitir sólo archivos .jpg

Código:
<script language="JavaScript" type="text/javascript">
function LimitAttach(tField,iType) { 
file=tField.value; 
extArray = new Array(".jpg"); 
allowSubmit = false; 
if (!file) return; 
while (file.indexOf("\\") != -1) file = file.slice(file.indexOf("\\") + 1); 
ext = file.slice(file.indexOf(".")).toLowerCase(); 
for (var i = 0; i < extArray.length; i++) { 
if (extArray[i] == ext) { 
allowSubmit = true; 
break; 
} 
} 
if (allowSubmit) { 
} else { 
tField.value=""; 
alert("Sólo se permiten imágenes .jpg"); 
} 
}
</script>
Lo que quiero hacer es que si el tipo de archivo seleccionado no es jpg, aparte de que aparezca el alert, el campo quede vacío. Supongo que es con tField.value=""; pero no me funciona.

¿Alguna idea?

Muchas gracias
  #2 (permalink)  
Antiguo 21/02/2006, 01:57
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola Mauri1

Por motivos de seguridad a los input file no se les puede cambiar el value por código. Si se pudiera alguien podría colocar algún archivo que tenga el usuario en su equipo y enviar el formulario sin que el usuario se de cuenta ni lo autorice.

Saludos,
  #3 (permalink)  
Antiguo 21/02/2006, 07:18
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 21 años, 5 meses
Puntos: 0
ok, gracias, no sabía eso

¿Entonces cómo puedo hacer para que el formulario no se pueda enviar o que el botón de enviar se desactive si el tipo de archivo no es jpg?

Muchas gracias nuevamente JavierB
  #4 (permalink)  
Antiguo 22/02/2006, 05:55
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 21 años, 5 meses
Puntos: 0
¿Alguna idea?
  #5 (permalink)  
Antiguo 22/02/2006, 06:02
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 21 años, 5 meses
Puntos: 0
Pude desactivar el botón de enviar con esto

document.form1.Submit.disabled = true;

Pero de todas formas si apreto enter, el formulario se envía
  #6 (permalink)  
Antiguo 22/02/2006, 07:16
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

Parece que con IE no sirve el código que has puesto (con FF no hay problema) prueba poniendo esto para que no haga el submit el formulario:

document.form1.onsubmit = function() {return false};

cuando quieras que vuelva a funcionar hace lo mismo pero con return true

Espero que te sirva. Saludos,
  #7 (permalink)  
Antiguo 22/02/2006, 07:45
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Buenas. Es muy simple, cuando se dispara el evento onsubmit, ejecutás la función ( --> return nombreFuncion() ). Además de mostrar un alert en caso de que la extensión no sea válida hacés que devuelva false. Si es válida, devolvés true con return true.

Código:
function nombreFuncion() {
     hacerValidaciones;
    if (pasa la validación) {
    return true;
    }
    alert("algún mensaje de error");
    return false;
}
Al formulario, en el tag <form> le ponés onSubmit="return nombreFuncion()". y eso es todo.

También podrías asignar la función al evento directamente desde JS, pero hay que dar una vuelta más, porque el código se lee antes de que carguen todos los elementos de la página, y por eso el formulario te va a dar "undefined" y la función no se va a asignar:

Código:
window.onload = inicializar;
function inicializar() {
    /* tenés dos opciones. La segunda te sirve 
       si necesitás pasar parámetros a la función.
    */
   document.nombreForm.onsubmit = nombreFuncion; // acá no pongas paréntesis ()
   // o: 
   document.nombreForm.onsubmit = function() {
          nombreFuncion(); 
        /* acá eventualmente podrías ejecutar más código o
            pasar parámetros
       */

    }
}
Suerte
  #8 (permalink)  
Antiguo 22/02/2006, 08:16
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 21 años, 5 meses
Puntos: 0
Estupendo, ahora si !!

Muchas gracias califa010 y JavierB

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 23:46.