我有一个下拉列表,当进行选择时,将使用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?
答案 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值,你应该好好去。
我是通过手机写的,所以在这里编写代码很痛苦。对不起。只是想在你看到我的另一个答案评论之后迅速帮助你。将在早上检查这个帖子,以确定您是否需要更多帮助。