2017-09-19 1 views
0

Ich benutze jquery Datei hochladen, um Dateien auf Server-Side-Aktion hochzuladen. Ich möchte jedoch auch zusätzliche Formularfelder als Teil des Formulars abschicken. Außerdem möchte ich, dass die Formularübermittlung nur dann erfolgt, wenn auf die Schaltfläche "Senden" geklickt wird.So senden Sie zusätzliche Formularfelder mit jQuery-Datei hochladen

Ist dies mit jquery-Datei-Upload möglich?

ich eine jsbin erstellt haben: http://jsbin.com/mozujilede/1/edit?html,js,output

Wunschverhalten:

  • Benutzer darauf aufmerksam gemacht werden sollten, wenn sie versuchen, mehrere Dateien als zulässige Grenze
  • zusätzliche Formulardaten gesendet werden sollen hochladen auf der Serverseite zusammen mit mehreren Dateien
  • das Formular absenden sollte nur passieren, wenn Benutzer auf Senden Schaltfläche klickt.

Dies ist, was ich im Moment mache:

var maxFiles = 10; 
$('#fileupload').fileupload({ 
    singleFileUploads: false, 
    url: '/uploadUrl' 
}).bind('fileuploadadd', function (e, data) { 
     var input = $('#input'); 
     data.formData = {example: input.val()}; 
     var fileCount = data.files.length; 
     if (fileCount > maxFiles) { 
      alert("The max number of files is "+maxFiles); 
      return false; 
     } 
    }); 
+0

können Sie 'FormData' verwenden, um' Post' N-Dateien und zusätzliche Schlüssel, Wertpaare zum Server. – guest271314

+0

Wie kann ich nur Zeug zum Server senden, wenn Sie auf "Senden" klicken. im Moment scheint die Einreichung geschehen zu sein, sobald ich die Dateien hochlade –

+0

Hab noch nicht 'jquery-file-upload' probiert. Sie sollten in der Lage sein, die Anforderung zu erfüllen, indem Sie die Standardaktion beim Klicken auf '' '' ''

'und' POST'ing 'form' elements Schlüssel verhindern, Wertepaare zum Server mit' FormData' und 'XMLHttpRequest() 'oder' fetch() ' – guest271314

Antwort

0

Probieren Sie diese

var byButton = false; 
 
$("#sub-but").on("click",function(){ 
 
    var inp = $("#files")[0]; 
 
    if(inp.files.length > 10){ 
 
    alert("Max number of files"); 
 
    return false; 
 
    } 
 
    byButton = true; 
 
    $("#myForm").submit(); 
 
}); 
 
function validate(){ 
 
    if(!byButton) 
 
    return false; 
 
    byButton = false; 
 
    return true; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="myForm" onsubmit="return validate();"> 
 
    <input type="text" placeholder="some extra items"/> 
 
    <input type="file" id="files" multiple="multiple"/> 
 
    <input type="button" value="Submit" id="sub-but"/> 
 
</form>

+0

Verhindert Code die Standardaktion von' 'Einreichung bei Klick auf' '? – guest271314

+0

Von was ich getestet habe, wenn die Anzahl der Dateien mehr als 10 ist, Formular ist nicht übergeben, also die Standardaktion muss verhindert werden. –

+0

@ guest271314 Sie können versuchen, indem Sie die Netzwerkregisterkarte der Entwicklerwerkzeuge öffnen. –

Verwandte Themen