2012-03-12 11 views
5

मैं यह पता लगाने की कोशिश कर रहा हूं कि सीकेईडिटर में jquery का उपयोग करके कुछ बदल गया है, लेकिन इसे काम पर नहीं लाया जा सकता है।यदि सीकेएडिटर में सामग्री बदल दी गई है

var isModified = false; 

$('textarea,input').change(function(){ 
     if(!isModified){ 
      isModified = true; 
     } 
}); 

$(".ckeditor").document.on('keydown', function() { isModified = true; }); 

window.onbeforeunload = function(){ 
     $(".ckeditor").ckeditorGet().updateElement(); 

     if(isModified){ 
       return "Are you sure you want to leave page?"; 
      } 
    }; 

क्या किसी को पता है कि इसे सीकेईडिटर 3.6.2 के लिए काम करने के लिए क्या चाहिए? यह अन्य सभी रूप तत्वों पर काम करता है।

उत्तर

3

आप संपादक के मुख्य ईवेंट पर बाध्यकारी करके संपादक के भीतर परिवर्तनों को ट्रैक कर सकते हैं।

jQuery अनुकूलक का उपयोग करना: key घटना

+7

नोट: सामग्री में कुछ बदलावों को एक महत्वपूर्ण घटना से निकाल दिया नहीं जा सकता है, उदाहरण के लिए कुछ बोल्ड बनाना सिर्फ एक माउस क्लिकटाइट क्लैक है, न कि एक कीबोर्ड टैप। शब्द। CKeditor 4.X के लिए – Nenotlep

0

मेरी स्थानीय ड्रूपल स्थापना के साथ जांच कर, सीकेएडिटर एक नियमित HTML फॉर्म तत्व नहीं है (यह एक textarea नहीं है)। इसके बजाय, यह एक फॉर्म तत्व की नकल करने वाला IFrame है। मुझे लगता है कि आपको एक छोटी सी केडीडिटर प्लगइन शिम बनाने की आवश्यकता होगी और अपनी स्थानीय स्क्रिप्ट के साथ संवाद करने के लिए इसका उपयोग करें, देखें: add code for event listener for keypress in ckeditor

1

पर

$('.ckeditor').ckeditorGet().on('key', function(e) { 
    var keyCode = e.data.keyCode; // if you need to track the key 
    isModified = true; 
}); 

डॉक्स आप इस CKEditor plugin है कि एक घटना जब भी सामग्री में परिवर्तन आग का उपयोग कर सकते हैं।

+0

? और @Nenotlep अपडेट के बारे में, "सीकेएडिटर 4.2 बाहर है और यह ऑन चेंज इवेंट को एक फीचर के रूप में पेश करता है", वही है या प्लगइन बेहतर है? –

+1

यह एक अलग कार्यान्वयन है। मौजूदा प्लगइन को चुनने और इसे सुधारने के बजाय उन्होंने अंडो का उपयोग करके एक बहुत ही बुनियादी संस्करण लिखने का फैसला किया, इसलिए जब मैंने समझाया कि वे सीकेडडिटर में अंडो सिस्टम एक बदलाव घटना के लिए पर्याप्त क्यों नहीं है, तो वे सभी सुविधाओं को याद कर रहे हैं। – AlfonsoML

+0

पृष्ठ से जुड़ा हुआ यह कहता है कि यह काम नहीं करता है और ckEditor 4 के लिए अपडेट नहीं किया जाएगा। –

28

इसके लिए a function called checkDirty() in the CKE api है। इस तरह आपको अपना खुद का रोल करने की आवश्यकता नहीं है। रीसेटडिडी() जैसे अन्य उपयोगी कार्यों के साथ आता है। एक परीक्षण के रूप में इस प्रयास करें:

if (CKEDITOR.instances.editor1.checkDirty()) alert("Content changed"); 

अद्यतन 5.7.2013

http://dev.ckeditor.com/ticket/9794 देखें - परिवर्तन घटना एक की पुष्टि की नई सुविधा है! इसे मीलस्टोन 4.2 के लिए भी चिह्नित किया गया है और सीकेएसओएस से ट्वीट द्वारा पुष्टि की गई है! बस मील के पत्थर की देय तिथि पर भरोसा न करें, वे बदलते हैं।

अद्यतन 1.8.2013

CKEditor 4.2 बाहर है और यह एक सुविधा के रूप में onChange घटना की शुरुआत की। स्पष्ट रूप से यह दस्तावेज़ों के अनुसार हर संभव परिवर्तन के लिए 100% विश्वसनीय नहीं है - उम्मीद है कि यह उपयोग करने के लिए पर्याप्त है! http://ckeditor.com/release/CKEditor-4.2

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