2015-10-12 8 views
19

मैं इस नमूने है:मैं इसे "ड्रॉपज़ोन पहले से संलग्न" त्रुटि कैसे ठीक कर सकता हूं?

link

मैं इस फार्म बनाने में कामयाब रहे लेकिन दुर्भाग्य से यह क्योंकि मैं त्रुटि मिलती है काम नहीं करता।

Dropzone already attached. 

कोड एचटीएमएल:

<div class="dropzone dz-clickable" id="myDrop"> 
           <div class="dz-default dz-message" data-dz-message=""> 
             <span>Drop files here to upload</span> 
           </div> 
</div> 

कोड जे एस:

Dropzone.autoDiscover = false; 
var myDropzone = new Dropzone("div#myDrop", { url: "/file/post"}); 

// If you use jQuery, you can use the jQuery plugin Dropzone ships with: 
$("div#myDrop").dropzone({ url: "/file/post" }); 

मैं Dropzone.autoDiscover = false; की स्थापना की लेकिन दुर्भाग्य से अभी भी काम नहीं।

क्या आप कृपया मुझे बता सकते हैं कि इस समस्या का कारण क्या है?

उत्तर

8

आप का उपयोग करना चाहिए या तो

var myDropzone = new Dropzone("div#myDrop", { url: "/file/post"}); 

या

$("div#myDrop").dropzone({ url: "/file/post" }); 
नहीं

दोनों। असल में आप जो कर रहे हैं वह वही बात दो बार बुला रहा है।

+0

ठीक जारी करता है, मैंने किया है, लेकिन मैं इस त्रुटि – Marius

+0

@Marius मिलती रहती है: आप अपने बेवकूफ में कोशिश की? क्योंकि इसमें कुछ सेटिंग्स गायब हैं, जैसे jQuery लाइब्रेरी समेत, और डोम रेडी पर कोड निष्पादित करें: [अपडेटेड फ़िल्ड] (https://jsfiddle.net/natr69ab/) – EdenSource

+0

jsfiddle काम में लेकिन मेरी साइट को एक नई त्रुटि मिलती है .. (...)। ड्रॉपज़ोन एक फंक्शन नहीं है – Marius

4

यह त्रुटि तब भी हो सकती है जब किसी तत्व के पास पहले से ही dropzone कक्षा हो।

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

+0

मैंने ऑटोडिस्कवर को गलत पर सेट किया है और मेरे पास क्लास ड्रॉपज़ोन के साथ केवल एक तत्व है। क्या आप जानते हैं कि कोई समस्या क्या हो सकती है? – Nedim

+0

ठीक है, मुझे पता चला। समस्या यह थी कि मैंने पहले ही ड्रॉपज़ोन.जेएस (टेम्पलेट से खरीदा है) शामिल किया था, इसलिए मैंने केवल एक बार छोड़ा था। – Nedim

65

परिभाषित विश्व स्तर पर मदद मिलेगी:

Dropzone.autoDiscover = false; 
+2

इस सरल, लेकिन प्रभावी समाधान के लिए धन्यवाद। मुझे लगता है कि समस्या Dropzone प्लगइन है, जो स्वचालित रूप से सभी ड्रॉपज़ोन उदाहरण स्वचालित रूप से स्वचालित करता है। अधिकांश प्लगइन्स के साथ, यह तब तक नहीं होता जब तक आप इसे स्वयं चालू नहीं करते। तो हम ड्रॉपज़ोन के साथ इसकी अपेक्षा करते हैं। फिर, जब हम ड्रॉपज़ोन को तुरंत चालू करते हैं, तो यह केवल तात्कालिकता होने पर विश्वास करता है, प्लगइन के कारण स्वचालित रूप से एक भी करने के कारण, हम वास्तव में दो प्राप्त करते हैं। यही कारण है कि कोड की यह पंक्ति काम करती है - उस पहले तात्कालिकता को बंद करके। – Cheeky

+3

बाहरी jquery को पहले से ही – sobelito

+2

जोड़ना सुनिश्चित करें, यह स्वीकार्य उत्तर होना चाहिए। – Vayne

2

यह मेरा hackish समाधान नहीं है। यह मूल रूप से जांचता है कि ड्रॉपज़ोन को डोम के रूप में लोड किया गया है, और यदि यह नहीं है, तो यह एक बना देगा।

function dropzoneExists(selector) { 
     var elements = $(selector).find('.dz-default'); 
     return elements.length > 0; 
    } 

    var exists = dropzoneExists('div#photo_dropzone'); 
    if(exists) return; 

    $('div#photo_dropzone').dropzone({ 
     ... 
     ... 
    }); 

अद्यतन: यह पता लगाने की क्यों dropzone दो बार शुरू किया जाता है का सुझाव दिया है। फिक्सिंग यह सही तरीका है, और यह उत्तर केवल तकनीकी रूप से-ऋणपूर्ण वर्कअराउंड है।

2

नेट पर कई समाधान खोजने और कोशिश करने के बाद, यहां मुझे इस मुद्दे को हल करने के लिए सबसे अच्छे समाधानों में से एक मिला।

एचटीएमएल

<div id="some-dropzone" class="dropzone"></div> 

जावास्क्रिप्ट

Dropzone.options.someDropzone = { 
    url: "/file/post" 
}; 
1

कभी कभी क्योंकि आप एक ही आईडी dropzone साथ दो बार तत्वों एचटीएमएल है।

<div id="dropzone" class="dropzone"></div> 

<div id="dropzone" class="dropzone"></div> 
1

मैंने dropzone.js को संपादित करके इस समस्या को ठीक किया। बस ड्रॉपज़ोन पर जाएं।जे एस और की जगह

if (this.element.dropzone) { 
    throw new Error("Dropzone already attached."); 
    } 

if (this.element.dropzone) { 
    return this.element.dropzone; 
} 

के साथ इस समाधान मूल रूप Haskaalo से पाया जाता है GitHub पर तैनात

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

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