2012-08-08 10 views
5

Eventuali duplicati:
Clearing <input type='file' /> using jQueryImpossibile chiaro input type = file in javascript jquery

Questo è il mio codice:

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

Ho provare alcune soluzioni :

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

e molti altri dal web ma non ci sono riusciti.

+0

Possibile duplicato: http://stackoverflow.com/q/1043957/663604 –

+0

Io uso quella risposta, ma in realtà non ha successo. – anmarti

risposta

9

Non è possibile impostare il valore di un file in ingresso per (ovvi) motivi di sicurezza.

Se si desidera cancellare, è necessario per ripristinare il modulo è in.


la sua sostituzione con uno nuovo dovrebbe anche funzionare, ma lo fanno con il codice valido. (il che significa che non provare ad includere il codice lato server come l'attributo/valore ASP runat=server e citare valori di attributo che non sono semplici parole (ad es. il tuo attributo di stile)).

+0

quindi, se inserisco il tipo di input = file con un div e utilizzo la seconda opzione dovrebbe funzionare? – anmarti

+0

Puoi elencare/spiegare i motivi di sicurezza? – Satish

+0

@Satish: le persone mantengono informazioni private nei file sul proprio computer. Se qualche sito web che hai visitato potesse leggere quei file, non sarebbe molto privato. – Quentin

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

Siamo spiacenti, non è così. – anmarti

+0

$ (ID).val (''); funzionerà se applicato all'interno dell'evento valido di un elemento – TheDean

7

Il tentativo di impostare il valore con .VAL ('') non riuscirà in alcuni browser (come Internet Explorer) per motivi di sicurezza.

vostri migliori opzioni è per ripristinare il modulo:

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

o per utilizzare il codice di sostituzione, con una leggera modifica (assicurandosi che il codice HTML valido):

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

Se stile la scatola con i CSS, il tuo codice diventa ancora più semplice.

Il CSS:

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

La JavaScript:

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

Un'opzione più avanzata è quella di nascondere la finestra di caricamento di file quando la pagina viene caricata, quindi creare un clone di esso che viene mostrato all'utente. Quando hai bisogno di cancellarlo, cancelli il clone, quindi ri-clonò quello nascosto originale. Questo metodo consente inoltre di creare più copie della casella di input se si desidera consentire all'utente di caricare più di un file. Lascerò i dettagli di implementazione a voi. ;)

Problemi correlati