2013-02-27 14 views
8

Die Frage ist im Zusammenhang mit jquery file upload plugin from blueimpOptional Datei-Upload mit Blueimp jquery Datei-Upload-Plugin

Ich baue ein Formular, in dem die Datei-Uploads sind optional. Es stellt sich heraus, dass ich kein Formular posten kann, wenn keine Dateien zum Hochladen ausgewählt sind. Aus diesem Grund muss ich zwei Formulare auf meiner Seite erstellen und alle schmutzigen überprüfen, um hochgeladene Dateien zu löschen, wenn der Benutzer beschließt, keine tatsächlichen Daten hinzuzufügen.

Die Frage ist:

Kann ich die Form, auch wenn keine Dateien ausgewählt werden, so dass ich noch in der Lage sein, die zusätzlichen Formulardaten auf Server-Seite zu erhalten?

+0

haben Sie Folgendes versucht: $ ("#fileupload") .submit(); –

+0

Sie können das Formular auch dann posten, wenn die Datei nicht ausgewählt wurde. Sie sollten nicht zwei Formulare erstellen. – Max

+0

@Max wie kann das gemacht werden? – Dan

Antwort

0

Ich weiß, dass dies eine alte Frage, aber für diejenigen, die mit dem gleichen Problem zu kämpfen haben:

Sie müssen in die Doc graben bin hier:

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

Und es gibt eine Liste von hilfreiche ereignisse:

$('#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

Ist eines dieser Ereignisse eine Antwort auf die Frage? – Agey

4

Ich habe das gleiche Problem selbst. Ich habe eine Form (eingebaut in Angular), mit blauen Imp Winkel-Implementierung. Das Formular selbst hat Felder; Die Datei ist optional. Muss ein einzelner Beitrag sein (mit oder ohne Datei).

Am submit() passiert nichts.

Die oben aufgeführten "nützlichen Ereignisse" werden nur ausgelöst, wenn eine Datei hinzugefügt wird.

0

Einstellung SingleFileUploads zu false half nicht viel mit JQuery-Datei-Uploader, da es scheint, ein Fehler zu sein, wie diskutiert here. Also habe ich dieses Ding auf die Wahrheit zurückgesetzt.

Ich habe die Eingaben in zwei separate Formulare aufgeteilt - eines für die Eingabe von Textfeldern und eines für Dateien (das JQuery-Datei-Uploader durchläuft). Für das Textfeld habe ich eine sichtbare Schaltfläche gedrückt, auf die der Benutzer klicken kann. Für den anderen versteckte ich den Knopf. Wenn der Benutzer also auf die Schaltfläche "sichtbar" klickt, übergebe ich nur die Texteingabe und erstelle einen Datenbankeintrag im Backend (dies geschieht über einen AJAX-Aufruf) und im Erfolgsfeld des AJAX-Aufrufs klicke ich() auf die ausgeblendete Schaltfläche Die Anzahl der Dateien ist mehr als 0.

0

Ich weiß, ich bin zu spät zur Party, aber es gab keine echte Lösung bis heute aufgeführt. Sie können gefälschte der Tat gibt es eine Datei, hinzugefügt wird durch das Add-Ereignis manuell aufrufen, wie:

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

Sie würden eine variable Einrichtung die Form Informationen zu speichern, die Variable aktualisieren, wenn Add und lösen das hinzufügen wie oben, wenn Es gab keine Datei. Hier ist, was der Code würde wie folgt aussehen:

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

Dies erlaubt Sie zu bleiben im Einklang mit, wie die Daten an den Server übergeben wird.

Verwandte Themen