我有一个下拉列表,当做出选择时,将使用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?
解决方法:
您需要使用传入的ajax内容调用tinyMCE.activeEditor.setContent.在你的回调尝试:
tinyMCE.activeEditor.setContent(data);
问候