2013-06-07 10 views
6

मुझे एहसास है कि प्रश्न की इस भिन्नता कई बार दिखाई दी है, लेकिन कोई भी नहीं जो मुझे इस तरह के संदर्भ में इस प्रश्न का उत्तर दे सकता है।फ़ाइल अपलोड के बाद Jquery फॉर्म सबमिशन

मैं किसी तृतीय पक्ष fileuploader, जो jQuery का इस्तेमाल करता है और जब फाइल अपलोड पूर्ण होने पर एक सफलता कॉलबैक देता उपयोग कर रहा हूँ।

जो मैं प्राप्त करना चाहता हूं वह फ़ाइल फ़ील्ड के साथ टेक्स्ट फ़ील्ड के साथ एक फॉर्म है, जब आप 'सबमिट' पर क्लिक करते हैं, अपलोड फ़ंक्शन को बंद कर देता है (और फ़ाइल इसके प्रगति पट्टी के साथ अपलोड करना शुरू कर देती है), और प्रतीक्षा करता है फॉर्म जमा करने से पहले सफलता कॉलबैक।

मैं तुरंत स्वीकार करने के लिए है कि मैं jQuery के साथ एक पूर्ण मूर्ख हूँ और यह मुझे पूरी तरह से भ्रमित, तो मैं बहुत अनिश्चित है कि यह कैसे प्राप्त करने के लिए कर रहा हूँ।

मेरे प्रयास अब तक केवल प्रपत्र तुरंत प्रस्तुत करने के लिए, जबकि फ़ाइल अपलोड चल रहा है प्रयास करने से होती है।

समारोह manualuploader.uploadStoredFiles(); जब 'अपलोड अब' बटन पर क्लिक instantiated है।

jQuery जो फ़ाइल अपलोडर को दर्शाता है इस प्रकार है:

<form action="index.php" method="post" enctype="multipart/form-data" id="uploader"> 
<div id="manual-fine-uploader"></div> 
<div id="triggerUpload" class="btn btn-primary" style="margin-top: 10px;"> 
<input type="text" name="textbox" value="Test data"> 
<input name="test" type="button" value="Upload now"> 
</div> 
</form> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script src="fineuploader-3.6.3.js"></script> 
<script> 
$(document).ready(function() { 
var manualuploader = new qq.FineUploader({ 
     element: $('#manual-fine-uploader')[0], 
     request: { 
       endpoint: 'uploader.php' 
     }, 
     autoUpload: false, 
     text: { 
       uploadButton: '<i class="icon-plus icon-white"></i> Select Files' 
     } 
     }); 
     $('#triggerUpload').click(function() {  
     manualuploader.uploadStoredFiles(); 
     }); 
}); 

</script> 
+0

आपके पास अपने फॉर्म में स्पष्ट रूप से कुछ भी प्रासंगिक नहीं है। आपको इस फॉर्म की आवश्यकता क्यों है? कृपया कुछ यथार्थवादी संदर्भ प्रदान करें। –

+0

यह इसे सरल रखने के लिए एक उदाहरण है। मैं चाहता हूं कि उपयोगकर्ता अन्य जानकारी भरें (अपलोड शुरू होने से पहले) जो अपलोड पूर्ण होने के बाद सबमिट किया जाता है। – monkeymatrix

+0

यह http://stackoverflow.com/questions/16940096/fine-uploader-how-to-use-in-combination-with-other-input-fields का डुप्लिकेट जैसा प्रतीत होता है। –

उत्तर

6

मैं तुम्हें jQuery का उपयोग कर रहे देखा। आप the jQuery wrapper for Fine Uploader का उपयोग क्यों नहीं करते?

मैं onComplete कॉलबैक जो एक बार एक अपलोड खत्म (sucessful या नहीं) के सक्रिय होने पर सुनने के लिए होगा। जब onComplete निकाल दिया जाता है तो हम इसे submitForm() पर बनाते हैं जिसमें यह जांचने के लिए तर्क होता है कि सभी फाइलें सफलतापूर्वक सबमिट की गई हैं।

तर्क अपेक्षाकृत सरल है: यदि हमारे पास कोई फाइल प्रगति पर नहीं है और qq.statusFAILED की कोई फ़ाइल नहीं है तो हम फॉर्म सबमिट करने के लिए आगे बढ़ सकते हैं।

इसके अलावा, मैं यह सुनिश्चित करने के लिए onCancel कॉलबैक सुनता हूं कि अपलोड सफल नहीं होने पर फॉर्म सबमिट हो जाएगा और इस प्रकार रद्द कर दिया गया था।

कई और कॉलबैक हैं। मैं callbacks पर API methods पर ललित अपलोडर दस्तावेज़ों पर पढ़ने का सुझाव दूंगा। इसके अलावा, मैं Fine Uploader jQuery docs पर देखता हूं।

तो समझ jQuery आपकी समस्या है तो मैं पास के this रखने सुझाव देना चाहेंगे।

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script src="fineuploader-3.6.3.js"></script> 

<form action="index.php" method="post" id="uploader"> 
<input type="text" name="textbox" value="Test data"> 
    <div id="manual-fine-uploader"></div> 
    <div id="triggerUpload" class="btn btn-primary" style="margin-top: 10px;"> 
    </div> 
</form> 



$(document).ready(function() { 

    $("#triggerUpload").click(function() { 
     $("#manual-fine-uploader").fineUploader('uploadStoredFiles'); 
    }); 

    function submitForm() { 
     if ($(this).fineUploader('getInProgress') == 0) { 
      var failedUploads = $(this).fineUploader('getUploads', 
       { status: qq.status.UPLOAD_FAILED }); 
      if (failedUploads.length == 0) {  
       // do any other form processing here 
       $("#uploader").submit(); 
      } 
     } 
    }; 

    // Instantiate a Fine Uploader instance: 
    $("#manual-fine-uploader").fineUploader({ 
     autoUpload: false, 
     request: { 
      endpoint: "/uploads_bucket" 
     } 
    }).on("complete", function (event, id, name, response) { 
     submitForm.call(this); 
    }).on('statusChange', function (event, id, oldStatus, newStatus) { 
     if (newStatus === qq.status.CANCELED) { 
      submitForm.call(this); 
     } 
    }); 
}); 

मुझे बताएं कि क्या आपके पास कोई और प्रश्न है जिसके साथ मैं सहायता कर सकता हूं।

+0

धन्यवाद, क्या आपको कोई एहसास है कि ब्राउजर (फ़ायरफ़ॉक्स) एक पहले से लोड ईवेंट क्यों फेंक देगा ('ब्राउजर इस पेज को छोड़ने की कोशिश कर रहा है, क्या आप निश्चित हैं?') इस तरह एक से अधिक फाइल अपलोड करते समय? WITH एक फ़ाइल फॉर्म बिना किसी चेतावनी के ठीक से प्रस्तुत करता है। – monkeymatrix

+0

क्षमा करें, मैं बेवकूफ था। धन्यवाद, मैंने इसे एकाधिक फ़ाइल अपलोड के लिए परीक्षण किया है, और ऐसा लगता है कि अगर मेरे पास getInProgress जांच है तो अपलोडर सबमिट नहीं करेगा। भले ही फ़ाइल पूरी हो गई हो और यह केवल सबमिट हो जाने के बाद ही सबमिट करें, मुझे लगता है कि getInProgress का मान 0 नहीं है। – monkeymatrix

+2

@monkeymatrix यदि आपके पास कोई भी फाइल प्रगति पर है तो यह पहले से लोड करें संवाद प्रदर्शित किया जाएगा। यदि आप यह संवाद देख रहे हैं, तो कुछ फ़ाइलें अपलोड करने की प्रगति में हैं। –

संबंधित मुद्दे