2011-08-27 5 views
21

मैं का उपयोग कर आदेश एक शो पूर्वावलोकन स्क्रिप्ट में यह फ़ीड करने के लिए करने में महत्वपूर्ण पर एक TinyMCE पाठ क्षेत्रप्राप्त मूल्य

<textarea id="thetextarea"></textarea> 

का मान प्राप्त करना चाहते हैं:

function showPreview(value) { 

    $("#preview-container").load("/material-preview.php", {s:value}); 

} 
$('thetextarea').live("keyup",function (e) { 

     var material = this.value; 
     showPreview(material); 

     return false; 

    }); 

यदि मैं textarea id thetextarea चुनने का प्रयास करता हूं तो यह काम नहीं करता है (काम करता है अगर मैं इसे टिनिमस-फ़ील्ड नहीं बनाता)।

फ़ायरबग साथ

मैं देख रहा हूँ पाठ, जब पाठ क्षेत्र, TinyMCE-परिवर्तित है में है कि:

<body id="tinymce" class="mceContentBody"></body> 

लेकिन यह, या तो काम नहीं करता है (और न ही $('#tinymce') करता है)

$('mceContentBody').live("keyup",function (e) { 

      var material = this.value; 
      showPreview(material); 

      return false; 

     }); 

एचटीएमएल कोड (फ़ायरबग से) tinyMCE के बाद अनुरोध किया गया है

<textarea id="material-input" class="mceEditor text" style="width: 310px ! important; height: 250px ! important; display: none;" name="material" aria-hidden="true"></textarea> 
     <span id="material-input_parent" class="mceEditor defaultSkin" role="application" aria-labelledby="material-input_voice"> 
     <span id="material-input_voice" class="mceVoiceLabel" style="display:none;">Rich Text Area</span> 
     <table id="material-input_tbl" class="mceLayout" cellspacing="0" cellpadding="0" role="presentation" style="width: 310px; height: 250px;"> 
     <tbody> 
      <tr class="mceFirst" role="presentation"> 
      <tr> 
      <td class="mceIframeContainer mceFirst mceLast"> 
      <iframe id="material-input_ifr" frameborder="0" src="javascript:""" allowtransparency="true" title="Rich Text Area. Press ALT F10 for toolbar. Press ALT 0 for help." style="width: 100%; height: 206px;"> 
      <html> 
      <head xmlns="http://www.w3.org/1999/xhtml"> 
       <body id="tinymce" class="mceContentBody " contenteditable="true" spellcheck="false" dir="ltr"> 
        <!-- the text inside tinymce textarea --> 
       </body> 
      </iframe> 
      </td> 
      </tr> 
      <tr class="mceLast"> 
     </tbody> 
     </table> 
    </span> 
+0

http://stackoverflow.com/questions/1024712/this-keyup-not-responding-when-focused-on-tinymce – Joseph

उत्तर

0

आपका चयनकर्ता wr है उपरोक्त उदाहरण में ओएनजी। यह होना चाहिए:

$('#thetextarea').live("keyup",function (e) { 

नहीं

$('thetextarea').live("keyup",function (e) { 

यह सिर्फ अपने प्रश्न में कोई गलती है?

यदि आप सुनिश्चित नहीं हैं कि आपको कौन सा तत्व आवश्यक टेक्स्ट है, तो आप अपने ईवेंट हैंडलर को दोनों तत्वों में जोड़ने का प्रयास कर सकते हैं। इसके अलावा मुझे लगता है कि आप $(this).val() बनाम this.val का उपयोग करना चाहिए:

$('#thetextarea, .mceContentBody').live("keyup",function (e) { 
    var material = $(this).val(); 
    showPreview(material); 
    return false; 
}); 
+0

की मदद से इसे हल कर देता है @ जेजे जो सवाल में एक टाइपो था, मैं भी $ (इस) .val() में बदल गया लेकिन दुर्भाग्य से यह नहीं मिला। – Joseph

+0

क्या कुंजीपटल घटना आग लगती है? 'चेतावनी ('ईवेंट निकाल दिया गया') जोड़ने का प्रयास करें; यह देखने के लिए कि आपका ईवेंट फायरिंग हो रहा है या नहीं। यदि ऐसा है तो आपको केवल मूल्य को पुनः प्राप्त करने की आवश्यकता है - शायद '$ ('। MceContentBody ') के माध्यम से। Val(); ' –

+0

यह आग नहीं है इसलिए चयनकर्ता के साथ कुछ है। tinymce textarea को iframe में बनाता है और टेक्स्ट को सीधे < 'के अंदर पाठ डालता है, जो jquery selector के लिए कोई समस्या पैदा करेगा? – Joseph

3

कैसे onkeyup घटना को परिभाषित करने पर नीचे दिए गए लिंक देखें TinyMCE के साथ काम करने के लिए:

http://www.tinymce.com/wiki.php/API3:event.tinymce.Editor.onKeyUp

अनिवार्य रूप से जब आप tinyMCE आप प्रारंभ अपने ऑनकेप इवेंट हैंडलर को परिभाषित करें। मुझे लगता है कि टेक्स्ट एक अलग IFrame के अंदर है क्योंकि नियमित चयनकर्ता यहां काम नहीं करेगा। TinyMCE API में एक विधि .getContent() सूचीबद्ध है जो काम कर सकती है। अर्थात। कुछ इस तरह:

tinyMCE.init({ 
    setup : function(ed) { 
     ed.onKeyUp.add(function(ed, e) { 
      //showPreview ($('.mceContentBody').val()); 
      showPreview (tinyMCE.activeEditor.getContent({format : 'raw'})); 

     }); 
    } 
}); 

यह भी देखें: http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.getContent

आपकी समस्या jQuery या जावास्क्रिप्ट विशेष रूप से TinyMCE के साथ और अधिक है। यदि उपर्युक्त काम नहीं करता है तो आपको यह पता लगाने के लिए कि आप क्या हासिल करना चाहते हैं, TinyMCE दस्तावेज़ और/या एपीआई को पढ़ने की आवश्यकता होगी।

2

TinyMCE एक jQuery pluggin कि आप onKeyUp command in the API

$('textarea.tinymce').tinymce({ 
    // Location of TinyMCE script 
    script_url : 'path/to/tiny_mce.js', 

    theme : "simple", 

    setup : function(ed) { 
     ed.onKeyUp.add(function(ed, l) { 
      console.debug('Key up event: ' + e.keyCode); 
    }); 
    } 
}); 

साथ संयोजन के रूप में उपयोग कर सकते हैं वहाँ भी एक preview plugin, जो मुझे लगता है कि आप अधिक सीधे के बाद क्या थे करता है प्रदान करता है।

11
tinyMCE.get('yourTextAreaId').getContent(); 
43

कॉल

tinyMCE.triggerSave(); 

उसके बाद आप jQuery चयनकर्ता

$("#yourtextareaID").val(); 
+0

भयानक देखें! धन्यवाद। – Cody

+0

इस उत्तर को @Cody स्वीकार करें –

1

उपयोग करने के लिए आप यह भी उपयोग कर सकते हैं कर सकेंगे।

tinyMCE.activeEditor.getContent();

0

tinymce.innerHTML मुझे आवश्यक परिणाम