आप थीम स्तर के बजाय मॉड्यूल स्तर पर ऐसा करना बेहतर समझेंगे, क्योंकि जेएस व्यवस्थापक पृष्ठों के लिए अन्यथा प्रभावी नहीं होगा (जब तक कि आप दोनों के लिए एक ही विषय का उपयोग नहीं कर रहे हैं)।
इस कार्यक्षमता प्रणाली को प्रदान करने के लिए एक छोटा मॉड्यूल यहाँ दिया गया है:
फाइल: auto_upload.info
name = Auto Upload
description = Removes the need for users to press the 'Upload' button for AJAX file uploads.
core = 7.x
dependencies[] = file
फ़ाइल: auto_upload.js:
(function ($) {
Drupal.behaviors.autoUpload = {
attach: function (context, settings) {
$('form', context).delegate('input.form-file', 'change', function() {
$(this).next('input[type="submit"]').mousedown();
});
}
};
})(jQuery);
फ़ाइल: auto_upload.module
function auto_upload_init() {
drupal_add_js(drupal_get_path('module', 'auto_upload') . '/auto_upload.js');
}
एक बार जब आप मॉड्यूल को सभी फ़ाइल इनपुट स्थापित कर लेते हैं जो AJAX-ified (यानी जिनके पास 'अपडेट' बटन है) प्रभावित होगा ... आपको फ़ाइल का चयन करने के बाद किसी भी अधिक 'अपलोड' बटन को दबाने की आवश्यकता नहीं होगी। ।
delegate()
विधि का उपयोग करके यह फ़ाइल फ़ील्ड के लिए भी पूरी तरह से काम करेगा जो कई अपलोड की अनुमति देता है, और उन क्षेत्रों के लिए भी जो AJAX अनुरोध के परिणामस्वरूप पृष्ठ में लोड किए जाते हैं।
मैंने क्रोम, सफारी और फ़ायरफ़ॉक्स में परीक्षण किया है और यह एक इलाज का काम करता है :)
फुटनोट : आपकी साइट jQuery 1.7 का उपयोग कर रही है (शायद बहुत संभावना नहीं है) घटना में, आपको उस on()
विधि का उपयोग करना चाहिए , जिसने सुपरसीड किया है delegate()
।
अद्यतन मैंने इस मॉड्यूल के लिए एक सैंडबॉक्स प्रोजेक्ट बनाया है ।