मैं एक अद्यतन पैनल के अंदर एक टेक्स्ट क्षेत्र के लिए एक रिच टेक्स्ट एडिटर का उपयोग करना चाहता था। इस सवाल के माध्यम से http://www.queness.com/post/212/10-jquery-and-non-jquery-javascript-rich-text-editors:AJAX (अपडेट पैनल) के साथ TinyMCE का कोई मूल्य नहीं है
मैं इस पोस्ट पाया Need ASP.Net/MVC Rich Text Editor
के रूप में मैं यह पहले इस्तेमाल गैर AJAX स्थितियों में TinyMCE के साथ जाने का फैसला किया, और यह है कि सूची में यह AJAX के संगत है में कहते हैं। ठीक है, मैं अच्छा ओल 'tinyMCE.init({ //settings here });
परीक्षण करता हूं और अपडेट पैनल अपडेट करने के बाद गायब हो जाता है। मुझे यहां एक प्रश्न से पता चला है कि यह page_load
फ़ंक्शन में होना चाहिए ताकि यह एसिंक पोस्टबैक पर भी चलाया जा सके। ठीक है और पैनल रहता है। हालांकि, मेरे टेक्स्टरेरा से मूल्य जमा करने का प्रयास करने पर, इसका पाठ हमेशा खाली के रूप में वापस आता है क्योंकि मेरा फॉर्म वैलिडेटर हमेशा कहता है कि "आपको विवरण दर्ज करना होगा" जब भी मैं इसमें टेक्स्ट दर्ज करता हूं। पृष्ठ लोड होने पर और एसिंक पोस्टबैक के बाद पृष्ठ पर पहली बार ऐसा होता है।
ठीक है मुझे यह http://www.dallasjclark.com/using-tinymce-with-ajax/ और Can't post twice from the same AJAX TinyMCE textarea मिल गया है। मैं इस कोड को tinyMCE.init के ठीक बाद अपने पेज लोड फ़ंक्शन में जोड़ने का प्रयास करता हूं। ऐसा करने से मेरे सभी jquery को पेज_लोड में भी बुलाया जा रहा है, और यह अभी भी एक ही समस्या है।
मैं अभी भी क्लाइंट साइड स्क्रिप्टिंग सामग्री के लिए बहुत शुरुआत कर रहा हूं, तो शायद मुझे पेज_लोड की तुलना में कोड को एक अलग स्थान पर रखना होगा? निश्चित नहीं है कि मेरे द्वारा लिंक की गई पोस्ट इस कोड को कहां रखना है, इस पर बहुत सुराग नहीं था।
मेरे जावास्क्रिप्ट:
<script type="text/javascript">
var redirectUrl = '<%= redirectUrl %>';
function pageLoad() {
tinyMCE.init({
mode: "exact",
elements: "ctl00_mainContent_tbDescription",
theme: "advanced",
plugins: "table,advhr,advimage,iespell,insertdatetime,preview,searchreplace,print,contextmenu,paste,fullscreen",
theme_advanced_buttons1_add_before: "preview,separator",
theme_advanced_buttons1: "bold,italic,underline,separator,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink,separator,styleselect,formatselect",
theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,separator,removeformat,cleanup,charmap,search,replace,separator,iespell,code,fullscreen",
theme_advanced_buttons2_add_before: "",
theme_advanced_buttons3: "",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
extended_valid_elements: "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
paste_auto_cleanup_on_paste: true,
paste_convert_headers_to_strong: true,
button_tile_map: true
});
tinyMCE.triggerSave(false, true);
tiny_mce_editor = tinyMCE.get('ctl00_mainContent_tbDescription');
var newData = tiny_mce_editor.getContent();
tinyMCE.execCommand('mceRemoveControl', false, 'your_textarea_name');
//QJqueryUI dialog stuff
}</script>
अब मेरे वर्तमान कोड tinyMCE.execCommand("mceAddControl",true,'content');
जो कि एक सवाल संकेत दिया भी जोड़ा जाना चाहिए नहीं है। मैंने इसे जोड़ने का प्रयास किया लेकिन फिर से, यह सुनिश्चित नहीं था कि इसे कहां रखा जाए और इसे पेज_लोड में डालने से कोई प्रभाव नहीं पड़े।
पाठ बॉक्स नियंत्रण:
<asp:TextBox ID="tbDescription" runat="server" TextMode="MultiLine"
Width="500px" Height="175px"></asp:TextBox><br />
कैसे इतना है कि कोड के पीछे वास्तव में करने के पाठ क्षेत्र में क्या लिखा गया हो और मेरी सत्यापनकर्ता हुए कहा कि यह खाली होने के रूप में नहीं आएगा कर सकते हैं मैं इन मूल्यों को मिल सकता है? एसिंक पोस्टबैक के बाद भी, क्योंकि मेरे पास फॉर्म पर कई बटन हैं जो वास्तविक सबमिशन से पहले इसे अपडेट करते हैं।
धन्यवाद!
संपादित करें: अधिक स्पष्टीकरण के लिए मैं बहुत तरह बैक-एंड पर फ़ॉर्म सत्यापन हैं:
If tbDescription.Text = "" Or tbDescription.Text Is Nothing Then
lblDescriptionError.Text = "You must enter a description."
isError = True
Else
lblDescriptionError.Text = ""
End If
और इस त्रुटि हमेशा कारण होगा त्रुटि संदेश dispalyed किया जाना है।
संपादित करें: इस पर
ठीक है मैं यहाँ हताश हो रही है, मैं बिताया है घंटे। मैं अंत में पाया है कि मैं क्या विशेषज्ञों एक्सचेंज पर एक विजेता जिसमें कहा गया है निम्नलिखित माना (वहाँ एक्सएमएल में मूल्य एन्कोडिंग के बारे में एक हिस्सा था, लेकिन मैं छोड़ दिया है कि): http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_25059848.html
जो कोई साथ tinyMCE का उपयोग करना चाहता के लिए AJAX.Net:
संलग्न शुरू/AJAX अनुरोध वस्तु के लिए अंत संचालकों।ये आंकड़े (शुरू) भेजने से पहले tinyMCE नियंत्रण निकाल देंगे, और यह tinyMCE नियंत्रण (अंत) को पुन: होगा:
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(function(sender, args) { var edID = "<%=this.ClientID%>_rte_tmce"; // the id of your textbox/textarea. var ed = tinyMCE.getInstanceById(edID); if (ed) { tinyMCE.execCommand('mceFocus', false, edID); tinyMCE.execCommand('mceRemoveControl', false, edID); } }); Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) { var edID = "<%=this.ClientID%>_rte_tmce"; var ed = tinyMCE.getInstanceById(edID); if (ed) { tinyMCE.execCommand('mceAddControl', false, edID); } });
उपयोगकर्ता परिवर्तन/tinyMCE नियंत्रण से blurs करते हैं, हम यह सुनिश्चित करें कि चाहते हैं पाठ क्षेत्र/पाठ बॉक्स ठीक से अद्यतन हो जाता है:
ed.onChange.add(function(ed, l) { tinyMCE.triggerSave(true, true); });
अब मैं इस कोड का अपना स्क्रिप्ट टैग में डालने की कोशिश की है, डाल शुरू करते हैं और अपने स्वयं के स्क्रिप्ट टैग में अंत अनुरोध और में ed.onChange डाल पेज_लोड, पेज_लोड में सबकुछ डालें, और इसमें सभी 3 डालें अपनी स्क्रिप्ट टैग। सभी मामलों में यह कभी काम नहीं करता है, और कभी-कभी jquery को भी तोड़ देता है जो कि मेरे पेज_लोड में भी है ... (और हाँ मैंने अपने पेज को फिट करने के लिए उपर्युक्त कोड बदल दिया है)
क्या कोई इसे काम करने या समाधान देने के लिए प्राप्त कर सकता है?
कोड
मैंने उस धागे को देखा है और मैंने यह किया है, यदि आप चिह्नित उत्तर के नीचे उत्तर पढ़ते हैं, तो यह कहता है कि आप या तो स्टार्ट-अप स्क्रिप्ट पंजीकृत कर सकते हैं या इसे पृष्ठ_लोड जावास्क्रिप्ट फ़ंक्शन में डाल सकते हैं। मैंने उत्तरार्द्ध चुना और यह काम करता है क्योंकि मुझे उस व्यक्ति की एक ही समस्या नहीं है।उस व्यक्ति को पोस्ट-बैक के बाद नियंत्रण खो देता है, मुझे यह समस्या नहीं है, मेरी समस्या यह है कि जब मैं टेक्स्टरेरा भरता हूं और सबमिट करने का प्रयास करता हूं तो एक पोस्टबैक (और बाद में) से पहले, यह मुझे बता रहा है कि tbDescription.text खाली है। – SventoryMang