2012-08-02 16 views
5

के साथ फ़ाइल अपलोड करने के बाद ऑटो सबमिट फॉर्म मुझे केवल एक फ़ील्ड के साथ एक फॉर्म मिला। यह फ़ील्ड 'प्रबंधित_फील्ड' प्रकार का है। जब आप "अपलोड करें" बटन पर क्लिक करते हैं तो एक प्रगति बार आपको फ़ाइल अपलोड की प्रगति दिखाएगा। उसके बाद आपको फ़ाइल को सहेजने के लिए फॉर्म जमा करने की आवश्यकता होगी।ड्रूपल 7 - प्रबंधित फ़ाइल फ़ाइल

चूंकि जब आप कोई फ़ाइल चुनते हैं तो प्रगति पट्टी दिखाई नहीं देगी और फिर "अपलोड करें" बटन के बजाय सबमिट सबमिट बटन पर क्लिक करें। मैं अपलोड के बाद जमा करने के लिए एक फॉर्म ट्रिगर करना चाहता हूं ("अपलोड" बटन के माध्यम से) पूरा हो गया है।

मेरे मौजूदा फार्म इस तरह दिखता है:

$form['#attributes'] = array('enctype' => "multipart/form-data"); 

$form['pdf_upload'] = array(
    '#title' => t('Upload PDF'), 
    '#type' => 'managed_file', 
    '#required' => TRUE, 
    '#progress_message' => t('Please wait...'), 
    '#progress_indicator' => 'bar', 
    '#upload_validators' => array(
     'file_validate_extensions' => array('pdf'), 
    ) 

); 

$form['submit'] = array(
    '#type' => 'submit', 
    '#value' => t('Save'), 
); 

फ़ाइल मॉड्यूल फ़ाइल/ajax/* uri के लिए एक ajax कॉलबैक के माध्यम से फ़ाइलों को संभालती है। कॉलबैक AJAX आदेश देता है।

असल में मैं एक अतिरिक्त AJAX कमांड जोड़ना चाहता हूं जो फ़ाइल अपलोड होने के बाद जमा फॉर्म को ट्रिगर करता है।

+1

यह मुश्किल हो सकता है। एक विकल्प है कि फ़ाइल को चयन पर स्वत: अपलोड करें ताकि उपयोगकर्ता को अभी भी केवल एक बटन क्लिक करना पड़े। Http://drupal.stackexchange.com/questions/31121 देखें – Clive

उत्तर

2

@Clive यह मेरे लिए एक विकल्प नहीं था क्योंकि मैं चाहता था कि उपयोगकर्ता स्वयं अपलोड करना शुरू करें। आपने जवाब दिया मुझे कुछ विचार दिए हालांकि मैं निम्नलिखित समाधान के साथ आया था।

Drupal.behaviors.fileUpload = { 
    attach: function(context, settings) { 
     jQuery("body").ajaxComplete(function(event,request, settings){ 
      // Only do something when on the orders page of a user 
      // This is where I use the upload functionality 
      if(window.location.pathname.match(/user\/\d+\/orders/)) { 
       // Check if the AjaxComplete was triggered by the managed file upload 
       // pdf_upload_XXX is my form name 
       // Get the form-build-id from the URL 
       if (form_build_id = settings.url.match(/file\/ajax\/pdf_upload_\d*\/(.*)$/)) { 
        // Check if the upload has completed by checking if there is a Delete button in the form that has the form-build-id 
        if(jQuery('[value="'+form_build_id[1]+'"]').closest('form').find('[id$=remove-button]').length) { 
         // Click the submit button 
         jQuery('[value="'+form_build_id[1]+'"]').closest('form').find('[id^=edit-submit]').click(); 
        } 
       } 
      } 
     }); 

    } 
} 

आशा है कि यह अन्य उपयोगकर्ताओं के लिए भी उपयोगी होगा।

Thnx मुझे सही रास्ते पर सेट करने के लिए क्लाइव क्लाइव करें।

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