动态显示tinymce textarea

时间:2015-05-27 17:48:18

标签: javascript jquery html ajax tinymce

我有一个下拉列表,当进行选择时,将使用ajax在表单中将一堆元素插入到DOM中,在此表单中我有textareas,我希望是TinyMCE textareas。

我的HTML头文件中有这个:

<script type="text/javascript">
    tinymce.init({
        selector: "textarea"

     });
</script>

这是我用来添加一堆元素的ajax函数,这是我需要的工作方式。

function getSecFacility(facsecid, facid) {

    $("#new_section_form").hide();

    $.ajax({
    type: "POST",
    url:  "facility_section_information.php",
    data: 'facility_section_id='+facsecid+'&facility_id='+facid,

    success: function(data){
            $("#selected_fac_section").html(data);
    }
   });
   //loadTinyMCEEditor();
};

我的页面上有其他textareas没有被ajax插入而且显示为WYSIWYG编辑器没有问题,问题是当我添加新元素时。

我已经检查了其他一些试图找到“答案”的问题,但没有任何效果。

我尝试在我的ajax调用之后创建一个名为loadTinyMCEEditor()的函数,我在getSecFacility()函数中调用它。在这个函数中,我试图为这些新添加的textareas重新初始化tinyMCE。

loadTinyMCEEditor()看起来像这样:

function loadTinyMCEEditor() {
    tinyMCE.init({
            selector: "textarea"
      });
    tinyMCE.execCommand('mceAddControl', false, 'test'); //test is the class name I gave this textarea
    //tinyMCE.execCommand('mceAddControl', true, 'test'); //tried setting the bool to true..even tried without these lines
}

无论我尝试什么,我似乎无法使用新插入的textareas,我怎样才能将这些textareas变成TinyMCE textareas?

修改

我现在可以在从下拉列表中选择之后查看编辑器到我新添加的textareas。然而,这只能工作一次,如果我做第二次选择,新的textareas只显示为普通的textareas。这是我在ajax函数中改变的内容:

function getFacSecFacility(facsecid, facid) {

    $("#new_section_form").hide();

    $.ajax({
    type: "POST",
    url:  "facility_section_information.php",
    data: 'facility_section_id='+facsecid+'&facility_id='+facid,

    success: function(data){
            $("#selected_fac_section").html(data);
            loadTinyMCEEditor();
    }
   });
};


function loadTinyMCEEditor() {
    tinymce.init({
        selector: "textarea"
    });
}

所以在我做出选择之后,这个ajax函数将运行并显示新的textareas +其他表单信息,我重新初始化了tinymce编辑器,但由于某种原因,这只能工作一次。

我应该更改/做什么,以便我可以从我的下拉列表中进行多项选择,以便每次新的textareas都显示为tinymce textareas?

2 个答案:

答案 0 :(得分:3)

您需要使用传入的ajax内容调用tinyMCE.activeEditor.setContent。在回调中尝试:

tinyMCE.activeEditor.setContent(data);

问候

答案 1 :(得分:1)

如果要将#selected_fac_section转换为tinymce编辑器,则应在成功函数中调用tinymce的init函数。除非另外定义,否则Ajax调用是异步的。所以,如果你试图在ajax调用之外初始化textarea,那么仍然不会有一个textarea用tinymce来装饰,因为ajax调用还没有完成。这次使用选择器的id值,你应该好好去。

我是通过手机写的,所以在这里编写代码很痛苦。对不起。只是想在你看到我的另一个答案评论之后迅速帮助你。将在早上检查这个帖子,以确定您是否需要更多帮助。