Cómo borrar la entrada de archivo


83

A continuación se muestra parte del código jquery que tengo que muestra la entrada del archivo y un botón "Borrar 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 el botón "Borrar archivo" es porque si hace clic en el botón, se borrará todo lo que esté en la entrada del archivo. ¿Cómo lo codifico para que realmente borre la entrada del archivo cuando hago clic en el botón "Borrar archivo"?



Respuestas:


156

Esto debería funcionar:

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

1
Sí, es un código jQuery relativamente simple . Es una solución para varios navegadores.
Guillaume Poussel

3
Chicos, <input type=file />es readonlydespués de seleccionar el archivo de> = IE8 , por razones de seguridad, aquí está el parecido Q y corresponsal A para la solución que aquí se propone.
Paul T. Rawkeen

1
<input type=file />El tipo de datos es un archivo, no podemos borrarlo pasando una cadena vacía al campo de entrada.
Usman Mughal

Trabajando en Chrome también. Eso puede ser útil para ver esto stackoverflow.com/a/11953476/1830909 y mi comentario debajo.
QMaster

¿Cómo puedo eliminar un archivo en la carga de varios archivos en la entrada de archivo usando jquery?
Siempre aprendiz

41

Borrar la entrada de archivos con jQuery

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

Borrar la entrada de archivos con JavaScript

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

7

Este es el método que también me gusta usar, pero creo que debe agregar el parámetro bool true al método de clonación para que cualquier evento permanezca adjunto con el nuevo objeto y debe borrar el contenido.

    var input = $("#fileInput");

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

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



2

para los usuarios de React

e.target.value = ""

Pero si el elemento de entrada del archivo es activado por un elemento diferente (con un htmlForatributo), eso significará que no tienes el evento.

Entonces podrías usar una referencia:

al comienzo de la función:

const inputRef = React.useRef();

en el elemento de entrada

<input type="file" ref={inputRef} />

y luego en una función onClick (por ejemplo) puede escribir

inputRef.current.value = "" 
  • en React Classes: la misma idea, pero diferencia en el constructor: this.inputRef = React.createRef()

1

Otra solución si desea estar seguro de que esto es compatible con varios navegadores es eliminar () la etiqueta y luego agregar () o anteponer () o de alguna otra manera volver 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']"));


0

He hecho algo como esto y me está funcionando

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

0

En mi caso, otras soluciones no funcionaron de esta manera:

$('.bootstrap-filestyle :input').val('');

Sin embargo, si tiene más de 1 entrada de archivo en la página, restablecerá el texto en todos ellos.


0

get input id y put val está vacío como se muestra a continuación: Nota: No ponga espacio entre val comillas dobles vacías val ("").

 $('#imageFileId').val("")

0

este código funciona para todos los navegadores y todas las entradas.

$('#your_target_input').attr('value', '');

Te recomiendo que uses como:$(document).ready(function( {$('#your_target_input').attr('value', ''); } );
reza laki
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.