2012-03-08 11 views
31

Di seguito è riportata una parte del codice jquery che contiene l'input del file e un pulsante "Cancella file".Come cancellare l'input di file

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); 

Ora, la ragione ho il pulsante "Cancella File" è perché se si fa clic sul pulsante, allora sarà chiaro tutto ciò che è nel file di input. Come faccio a codificarlo in modo che cancelli effettivamente l'input del file quando clicco sul pulsante "Cancella file"?

+0

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

+0

Vedere questo anche https://forum.jquery.com/topic/how- to-clear-a-file-input-in-ie –

risposta

74

questo dovrebbe funzionare:

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

Funziona anche su IE ... –

+0

Sì, è un * codice jQuery relativamente * semplice. È una soluzione cross-browser. –

+2

Ragazzi, '' è 'readonly' dopo aver selezionato il file in> = ** IE8 **, per motivi di sicurezza, ecco il simile [Q] (http://stackoverflow.com/q/1043957/1548719) e il corrispondente [A] (http://stackoverflow.com/a/1188853/1548719) per la soluzione proposta qui. –

5

Questo è il metodo che mi piace da usare come bene ma credo che è necessario aggiungere il vero parametro bool al metodo clone in modo che tutti gli eventi a rimanere attaccato con la nuovo oggetto e hai bisogno di cancellare il contenuto.

var input = $("#fileInput"); 

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

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

-1

Questo funziona per

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

file di input chiaro con jQuery

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

file di input chiaro con JavaScript

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

ho fatto qualcosa di simile e che sta funzionando per me

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

Un'altra soluzione, se si vuole essere certi che questo è cross-browser in grado è quello di rimuovere() il tag e quindi aggiungere() o prepend() o in qualche altro modo aggiungere nuovamente una nuova istanza del tag di input con gli stessi attributi.

<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']"));