当使用jquery模式对话框和MVC.net时,TinyMCE附件会消失

时间:2011-11-07 09:41:55

标签: jquery asp.net-mvc tinymce

我有一个带有按钮的MVC.net页面,可以打开一个jquery模式对话框。我像这样打开对话框

$(dialogId).dialog(
            {
                dialogClass: 'test', closeOnEscape: true,
                title: title,
                height: height,
                width: width,
                minHeight: minHeight, maxHeight: maxHeight,
                minWidth: minWidth, maxWidth: maxWidth,
                resizable: resizable,
                modal: true,
                show: 'blind',
                hide: 'blind',
                open: addTinyMCE
            });

addTinyMCE是一个存在于partial中的函数,partial是模态的内容。添加微小的MCE代码看起来像这样

function addTinyMCE() {
        $('#emailMessage').tinymce({
            script_url: '/Scripts/tiny_mce/tiny_mce.js',

            theme: "advanced",
            plugins: "myButton,autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

            theme_advanced_buttons1: "xedomenubutton,undo,redo,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull",
            theme_advanced_buttons2: "formatselect,fontselect,fontsizeselect",
            theme_advanced_buttons3: "bullist,numlist,|,outdent,indent,|,link,unlink,anchor,image,|,insertdate,inserttime,|,forecolor,backcolor,|,fullscreen",
            theme_advanced_toolbar_location: "top",
            theme_advanced_toolbar_align: "left",
            theme_advanced_resizing: true,

            skin: "o2k7",

            template_external_list_url: "js/template_list.js",
            external_link_list_url: "js/link_list.js",
            external_image_list_url: "js/image_list.js",
            media_external_list_url: "js/media_list.js"            
        });
    }

myButton是一个tinyMCE按钮,我为一些自定义操作创建了它。

当我单击主页面上的按钮打开对话框时,对话框按预期打开,但是tinymce编辑器在部分对话框弹出窗口中对着textarea闪烁,然后返回到正常的textarea。部分还有一个下拉列表,当更改时,更新tinymce textarea(ajax)的内容,再次,textarea出现与附加的tinymce编辑器,然后返回到正常的textarea。

此外,这是一个模态对话框,何时应调用以下命令来创建和添加自定义按钮。

tinymce.create
tinymce.PluginManager.add

当我尝试将编辑器附加到主页面中的textarea时,一切都按预期工作(编辑器附加到文本区域,显示自定义按钮并正常运行)。

有什么建议吗?

我正在使用tinymce编辑器的jquery版本。

编辑:

我最终回到了使用jquery版本的tinyMCE,因为它在UI对话框中比标准版本运行得更好。

我设法正确加载自定义按钮,当我关闭并打开对话框时,编辑器可用。

我唯一的问题是,在第一次打开对话框时,tinyMCE会附加到textarea然后消失。我决定把我的文档准备好功能

setTimeout(function () { initTinyMCE(); }, 500);

这是有效的,但不是解决方案。 所以这里似乎存在时间问题。

我怎样才能确保textarea已经准备好接受tinymce编辑器,或者是过早发射的tinymce init?

2 个答案:

答案 0 :(得分:0)

我没有使用过jQuery版本,所以这是一个黑暗的镜头。常规版本不能通过Ajax延迟加载。

http://tinymce.moxiecode.com/forum/viewtopic.php?pid=66531#p66531

我使用的黑客,尚未经过广泛测试,运行:

window.tinyMCEPreInit = {base : 'your/js/folder/tinymce', suffix : '', query : ''};
// Lazily load your TinyMCE javascript
window.tinymce.dom.Event.domLoaded = true;

答案 1 :(得分:0)

jQuery tinymce构建是问题的根源,而且速度很慢。我建议使用常规的tinymce构建和addionally加载jQuery。

应在初始化时初始化自定义按钮。这可以使用自己的插件或setuop初始化参数来完成。