2012-08-08 15 views
5

Duplicar posibles:
Clearing <input type='file' /> using jQueryNo se puede borrar input type = archivo en javascript jquery

Este es mi código:

<input ID="fileUpload1" runat="server" type="file" style="width:275px; position:absolute; left:1px"/> 

he probar algunas soluciones :

$("input[type='file']").val(''); 
$('#DivfileUpload').replaceWith("<input class=VWButton ID=fileUpload1 runat=server type=file style=width:275px; position:absolute; left:1px/>"); 

y muchos otros de la web, pero no tuvieron éxito.

+0

Posible duplicado: http://stackoverflow.com/q/1043957/663604 –

+0

Utilizo esa respuesta, pero de hecho no se ha logrado. – anmarti

Respuesta

9

No se puede establecer el valor de una entrada de archivo por razones de seguridad (obvias).

Si desea desactivarla, es necesario restablecer el formulario que se encuentra.


su sustitución por uno nuevo también debería funcionar, pero lo hacen con un código válido. (lo que significa que no intente incluir el código del lado del servidor, como el atributo/valor ASP runat=server, y los valores de los atributos de citación que no son palabras simples (por ejemplo, su atributo de estilo)).

+0

así que si envuelvo el tipo de entrada = archivo con un div y uso la segunda opción debería funcionar? – anmarti

+0

¿Puede enumerar/explicar razones de seguridad? – Satish

+0

@Satish: las personas mantienen información privada en los archivos de sus computadoras. Si cualquier sitio web que visitó pudiera leer esos archivos, no sería muy privado. – Quentin

-1
$(function() { 
    $('#fileUpload1').val(''); 
}); 
+0

Lo siento, no es así. – anmarti

+0

$ (ID).val (''); esto va a funcionar si se aplica dentro del evento válido de cualquier elemento – TheDean

7

Intentar establecer el valor con .val ('') fallará en algunos navegadores (como IE) por razones de seguridad.

Sus mejores opciones es restablecer el formulario:

$('form').trigger('reset'); 

O utilizar su código de reemplazo, con una ligera modificación (asegurándose de que el HTML válido):

$('#fileUpload1').replaceWith('<input id="fileUpload1" type="file" style="width:275px; position:absolute; left:1px"/>'); 

Si estilo el cuadro con CSS, su código se vuelve aún más simple.

El CSS:

#fileUpload1 { 
    width: 275px; 
    position: absolute; 
    left: 1px; 
} 

La JavaScript:

$('#fileUpload1').replaceWith('<input id="fileUpload1" type="file"/>'); 

Una opción más avanzada es ocultar la caja de carga de archivos cuando se carga la página, a continuación, crear un clon de ella eso se muestra al usuario. Cuando necesite borrarlo, elimine el clon, luego vuelva a clonar el oculto original. Este método también le permite hacer múltiples copias del cuadro de entrada si desea permitir que el usuario cargue más de un archivo. Dejaré los detalles de implementación a su criterio. ;)

Cuestiones relacionadas