2013-02-27 7 views
8

La questione è legata alla jquery file upload plugin from blueimpopzionale di caricamento dei file con Blueimp file di jQuery plugin di caricare

Sto costruendo un modulo in cui i caricamenti di file sono opzionali. Si scopre che non riesco a inviare un modulo quando non ci sono file selezionati per il caricamento. Proprio per questo devo creare due moduli sulla mia pagina e fare tutto il controllo sporco per eliminare i file caricati se l'utente decide di non aggiungere dati reali.

La domanda è:

Posso inviare il modulo, anche se nessun file sono selezionati in modo che io possa ancora essere in grado di ricevere i dati del modulo aggiuntivi sul lato server?

+0

hai provato questo: $ ("#fileupload") .submit(); –

+0

È possibile inviare il modulo anche se il file non è stato selezionato. Non si dovrebbero creare due moduli. – Max

+0

@Max come può essere fatto? – Dan

risposta

0

So che questa è una vecchia questione, ma per chi è alle prese con lo stesso problema:

È necessario scavare nella Doc è qui:

https://github.com/blueimp/jQuery-File-Upload/wiki/Options

e non v'è un elenco di eventi utili:

$('#fileupload') 
.bind('fileuploadadd', function (e, data) {/* ... */}) 
.bind('fileuploadsubmit', function (e, data) {/* ... */}) 
.bind('fileuploadsend', function (e, data) {/* ... */}) 
.bind('fileuploaddone', function (e, data) {/* ... */}) 
.bind('fileuploadfail', function (e, data) {/* ... */}) 
.bind('fileuploadalways', function (e, data) {/* ... */}) 
.bind('fileuploadprogress', function (e, data) {/* ... */}) 
.bind('fileuploadprogressall', function (e, data) {/* ... */}) 
.bind('fileuploadstart', function (e) {/* ... */}) 
.bind('fileuploadstop', function (e) {/* ... */}) 
.bind('fileuploadchange', function (e, data) {/* ... */}) 
.bind('fileuploadpaste', function (e, data) {/* ... */}) 
.bind('fileuploaddrop', function (e, data) {/* ... */}) 
.bind('fileuploaddragover', function (e) {/* ... */}) 
.bind('fileuploadchunksend', function (e, data) {/* ... */}) 
.bind('fileuploadchunkdone', function (e, data) {/* ... */}) 
.bind('fileuploadchunkfail', function (e, data) {/* ... */}) 
.bind('fileuploadchunkalways', function (e, data) {/* ... */}); 
+0

uno di questi eventi è una risposta alla domanda? – Agey

4

Ho lo stesso problema me stesso. Ho una forma (costruita in Angolare), usando un'implementazione angolare blu. Il modulo stesso ha campi; il file è facoltativo. Deve essere un singolo post (con o senza il file).

Su submit() non succede nulla.

Gli "eventi utili" elencati sopra vengono attivati ​​solo quando viene aggiunto un file.

0

L'impostazione SingleFileUploads a false non ha aiutato molto con il file uploader JQuery poiché sembra esserci un errore come discusso here. Così ho ridato quella cosa alla realtà.

Ho separato gli input in due moduli separati: uno per i campi di testo in ingresso e uno per i file (che passa attraverso il file uploader JQuery). Per il modulo dei campi di testo, ho mantenuto un pulsante visibile che l'utente può fare clic. Per l'altro, ho nascosto il pulsante. Quindi, una volta che l'utente fa clic sul pulsante visibile, invio solo l'input di testo e creo un record di database nel back-end (questo viene fatto usando una chiamata AJAX) e nel campo di successo della chiamata AJAX, I .click() il pulsante nascosto se il numero di file è superiore a 0.

0

So che sono in ritardo alla festa, ma non c'era una soluzione reale elencata fino ad oggi. È possibile falso il fatto v'è un file che viene aggiunto, chiamando manualmente l'evento aggiuntivo come:

$('#fileupload').fileupload('add', { files: [{}] }); 

si sarebbe messa a punto una variabile per memorizzare le informazioni modulo, aggiornare la variabile quando add e attivare il componente aggiuntivo come sopra, se non c'era nessun file. Ecco ciò che il codice sarebbe simile:

var fileData; 
$('#fileupload').fileupload({ 
    add: function (e, data) { 
     fileData = data; 
    } 
}); 

$('form').submit(function() { 
    if (!fileData) { 
     $('#fileupload').fileupload('add', { files: [{}] }); 
    } 
    fileData.formData = params; 
    fileData.submit(); 
    return false; 
}); 

Questo ti permette di rimanere coerenti con il modo i dati vengono passati al server.

Problemi correlati