2012-03-08 11 views
31

A continuación se muestra una parte del código jquery que tengo, que muestra la entrada del archivo y el botón "Borrar archivo".Cómo borrar la entrada de archivo

var $imagefile = $('<input />').attr({ 
    type: 'file', 
    name: 'imageFile', 
    class: 'imageFile' 
}); 

$image.append($imagefile); 

var $imageclear = $('<input />').attr({ 
    type: 'button', 
    name: 'imageClear', 
    class: 'imageClear', 
    value: 'Clear File' 
}); 

$image.append($imageclear); 

Ahora, la razón por la que tengo en el botón "Borrar archivos" se debe a que si hace clic en el botón, entonces se borrará todo lo que está en el archivo de entrada. ¿Cómo lo codigo para que realmente borre la entrada del archivo cuando hago clic en el botón "Borrar archivo"?

+0

ver esto: http://stackoverflow.com/questions/1043957/clearing-input-type-file-using-jquery –

+0

Ver esto también https://forum.jquery.com/topic/how- to-clear-a-file-input-in-ie –

Respuesta

74

esto debería funcionar:

$imageClear.on('click', function() { 
    $imageFile.val(''); 
}); 
+1

¿Eso funciona en IE también ... –

+0

Sí, es un * código de jQuery * relativamente simple. Es una solución entre navegadores. –

+2

Chicos, '' es 'readonly' después de seleccionar el archivo en> = ** IE8 **, por razones de seguridad, aquí está el similar [Q] (http://stackoverflow.com/q/1043957/1548719) y corresponsal [A] (http://stackoverflow.com/a/1188853/1548719) para la solución propuesta aquí. –

5

Este es el método que me gusta usar también, pero creo que es necesario agregar el parámetro verdadero bool con el método de clon para que cualquier evento a permanecer unidos con el nuevo objeto y necesita borrar el contenido.

var input = $("#fileInput"); 

    function clearInput() { 
     input = input.val('').clone(true); 
    }; 

https://api.jquery.com/clone/

-1

Esto funciona a

$("#yourINPUTfile").val(""); 
5

de entrada de archivo transparente con jQuery

$("#fileInputId").val(null); 

de entrada de archivo transparente con JavaScript

document.getElementById("fileInputId").value = null; 
0

he hecho algo como esto y que está funcionando para mí

$('#fileInput').val(null); 
0

Otra solución si usted quiere estar seguro de que esto es a través del navegador que soporte es eliminar() la etiqueta y luego agregar() o anteponga() o de alguna otra manera, vuelva a agregar una nueva instancia de la etiqueta de entrada con los mismos atributos.

<form method="POST" enctype="multipart/form-data"> 
<label for="fileinput"> 
<input type="file" name="fileinput" id="fileinput" /> 
</label> 
</form> 

$("#fileinput").remove(); 
$("<input>") 
    .attr({ 
    type: 'file', 
    id: 'fileinput', 
    name: 'fileinput' 
    }) 
    .appendTo($("label[for='fileinput']")); 
Cuestiones relacionadas