2009-12-10 6 views
10

मैं वर्तमान में TinyMCE उपयोग कर रहा हूँ और इस प्रकार है कि काम करता है एक कस्टम बटन जोड़ना चाहते हैं के साथ पाठ का चयन कैसे जोड़ें: पाठ editior मेंTinyMCE - एक बटन लपेटता है कि एक टैग

  1. उपयोगकर्ता पर प्रकाश डाला पाठ
  2. उपयोगकर्ता कस्टम बटन एक्स
  3. पाठ (कुत्ता घूमना) कोई टैग (कुत्ते चलने) के साथ लिपटे है

अगर यह किया जा सकता है पर कोई भी विचार क्लिक करता है?

// Add a custom button 
ed.addButton('mybutton', { 
    title : 'My button', 
    'class' : 'MyCoolBtn', 
    image : 'MyCoolBtn.png', 
    onclick : function() { 
     // Add you own code to execute something on click 
     ed.focus(); 
     ed.selection.setContent('<strong>Hello world!</strong>'); 
    } 
}); 

धन्यवाद: मैं समझ गए होंगे कि कैसे एक कस्टम बटन पाठ इंजेक्षन बनाने के लिए है, लेकिन पाठ लपेट नहीं ... यहाँ वर्तमान कोड है!

उत्तर

27
ed.addButton('mybutton', { 
    title: 'My button', 
    class: 'MyCoolBtn', 
    image: 'MyCoolBtn.png', 
    onclick: function() { 
    // Add your own code to execute something on click 
    ed.focus(); 
    ed.selection.setContent('<tag>' + ed.selection.getContent() + '</tag>'); 
    } 
}); 
+0

एक प्रश्न @ वारियर, आपको 'ed.focus();' क्यों चाहिए? धन्यवाद – tif

+2

TinyMCE एपीआई दस्तावेज़ीकरण के मुताबिक http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.focus इस कॉल का उद्देश्य है: "इस संपादक को सक्रिय एडिटर के रूप में सेट करें tinymce संग्रह। यह संपादक के अंदर डोम फोकस भी रखेगा। " –

5

इस लक्ष्य को हासिल करने के लिए एक बेहतर तरीका है (1) एक त्वरित जांच प्रदर्शन करने के लिए सुनिश्चित करें कि चयन खाली नहीं है, तो (2) का उपयोग किया जाता है execCommand() विधि बनाने के लिए।

execCommand() का उपयोग करना मतलब है कि कार्रवाई पूर्ववत करने के लिए उपलब्ध होगी। @ योद्धा का जवाब setContent() का उपयोग करता है जो पूर्ववत नहीं किया जाएगा।

ed.addButton('mybutton', { 
    title: 'My button', 
    class: 'MyCoolBtn', 
    image: 'MyCoolBtn.png', 
    onclick: function() { 
    ed.focus(); 
    var text = ed.selection.getContent({'format': 'html'}); 
    if(text && text.length > 0) { 
     ed.execCommand('mceInsertContent', false, '<tag>'+text+'</tag>'); 
    } 
    } 
}); 
+1

इसे छोड़कर 'mceReplaceContent' होना चाहिए। बाद में इसे कैसे चुनना है इस पर कोई विचार? –

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