2010-08-31 11 views
19

मैं एक सुंदर सरल पृष्ठ पर सीकेडिटर 3.4 चला रहा हूं। मुझे कोई समस्या है (कभी-कभी) जहां मैं document.main_form.submit() को कॉल करता हूं, यह textarea की सामग्री के साथ नहीं भेजता है। कुछ पढ़ने के बाद, ऐसा लगता है जैसे सीकेडिटर ठीक से नष्ट नहीं कर रहा है। फ़ॉर्म को सहेजने से पहले मैंने मैन्युअल रूप से इसे नष्ट करने की कोशिश की, लेकिन इसे कॉल करने में सक्षम नहीं था। अजीब बात यह है कि यह कभी-कभी काम करती है, लेकिन दूसरों को नहीं। मैं क्रोम पर हूं, इसलिए चीजों के साथ खराब हो सकता है, लेकिन फ़ायरफ़ॉक्स में भी यही बात होती है।सीकेएडिटर उदाहरण को सही ढंग से कैसे नष्ट करें?

मैं सीकेडिटर को सही ढंग से कैसे नष्ट कर सकता हूं ताकि यह हमेशा पोस्ट में टेक्स्टरेरा डेटा भेज सके। धन्यवाद!

उत्तर

30

मुझे यह समस्या थी। क्या मुसीबत है।

ठीक से, संपादक उदाहरण नष्ट प्रलेखन here

मैं postback करने से पहले एक छिपी हुई फ़ील्ड को संपादक की सामग्री को बताए द्वारा अनुपलब्ध सामग्री समस्या हल हो जाती से

if (CKEDITOR.instances.myInstanceName) CKEDITOR.instances.myInstanceName.destroy(); 

प्रयास करें। मैं ASP.Net का उपयोग कर रहा हूं, लेकिन इसे सार्वभौमिक रूप से काम करना चाहिए।

सबमिट बटन के क्लाइंट छोर क्लिक हैंडलर में

,

if (CKEDITOR.instances.myInstanceName) 
    document.getElementById('hiddenField').value = CKEDITOR.instances.getData(); 
+1

द्वारा बनाई उदाहरणों को नष्ट करने के कोड करने के लिए ' है? क्या यह संपादक की आईडी है? – rmcsharry

5

फोन मेरी स्थिति में

CKEDITOR.instances.myInstanceName.destroy(); 

मदद नहीं की, क्योंकि मैं डबल क्लिक पर jquery dialog में CKEditor खोला था कुछ आइटम पर जब मैंने संपादक बंद कर दिया और फिर उन्हें फिर से खोला, तो मेरा कोड दुर्घटनाग्रस्त हो गया।
समाधान

CKEDITOR.instances.myInstanceName.destroy(false); 

जो डोम तत्व (link to documentation) अद्यतन उपयोग कर रहा था।

+1

हम अपने सीकेडडिटर को एक jquery संवाद में भी खोलते हैं। हम 'CKEDITOR.instances.myInstanceName.destroy (true) का उपयोग कर रहे थे; 'जिसने त्रुटि के कारण हमारे कोड को क्रैश कर दिया" टाइप एरर: एक शून्य है "। हालांकि, 'झूठी' पर स्विच करने से हमारी समस्या हल नहीं हुई। कोशिश के लिए कोड की इस पंक्ति को लपेटना था/पकड़ – jgerman

11

मैंने एक बार प्रत्येक उप-दृश्य के लिए एक CKEDITOR उदाहरण के साथ angularjs UI-राउटर का उपयोग किया। मैं उदाहरणों हर बार खाली करने के लिए निम्नलिखित समाधान का इस्तेमाल किया मैं ui-व्यू

for(name in CKEDITOR.instances) 
{ 
    CKEDITOR.instances[name].destroy() 
} 
+0

for..in के लिए IE10 की आवश्यकता है .. – Brunis

+0

यह एक बेहतर समाधान है। मेरे मामले में जब भी उपयोगकर्ता उस मार्ग पर जाता है जहां संपादक लोड होता है, तो इंस्टेंस नाम बदलता है .... संपादक 1 से editor2 तक। क्योंकि मैं आसानी से इंस्टेंस नाम की भविष्यवाणी नहीं कर सकता, इन कार्यों के माध्यम से उन सभी के माध्यम से लूपिंग कर रहा हूं। धन्यवाद! – rmcsharry

-2
$this->widget('cms.extensions.fancybox.EFancyBox', array(
    'target' => 'a#fancy-link', 
    'config' => array('onClosed'=>'js:function(){for(name in CKEDITOR.instances){ CKEDITOR.instances[name].destroy(true);}}' 
))); 
3

उपयोग इस सरल code.Note अपने पाठ क्षेत्र आईडी editor1 है लोड।
या तुम भी console.log(CKEDITOR.instances.editor1);

if (CKEDITOR.instances.editor1) { 
    CKEDITOR.instances.editor1.destroy(); 
} 
-1

समाधान है कि अंत में काम किया है के साथ इसे देख सकते हैं।

समस्या यह थी कि यदि आप एक सीकेडिटर को नष्ट करते हैं और बाद में एक टेक्स्टरेरा को प्रतिस्थापित करने का प्रयास करते हैं जो काम नहीं करता है।

मुझे यह सरल उदाहरण मिला जिसने मुझे सुराग दिया।'MyInstanceName div का प्रयोग करें और CKEditor बजाय संलग्न API कॉल

http://ckeditor.com/latest/samples/old/ajax.html

<div id='emailEditor1'> 
       </div> 

function closeTab() { 
    emailEditor1.destroy(); 
    emailEditor1 = null; 
} 

function createEditor() 
    if (emailEditor1 == null) { 
     emailEditor1 = CKEDITOR.appendTo('emailEditor1'); 
    } 
} 
1

for(name in CKEDITOR.instances){ CKEDITOR.instances[name].destroy() }

उपयोग का उपयोग कर की जगह का मुझे पता है कि कैसे क्या सभी CKEditor

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