【发布时间】:2015-05-27 17:48:18
【问题描述】:
我有一个下拉列表,当进行选择时,将使用 ajax 在表单中插入一堆元素到 DOM,在这个表单中,我有我希望成为 TinyMCE 文本区域的文本区域。
我的 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();
};
我的页面上有其他文本区域不是由 ajax 插入的,它们显示为 WYSIWYG 编辑器没问题,问题是当我添加新元素时。
我检查了其他几个问题,试图找到“答案”,但没有任何效果。
我试图创建一个名为 loadTinyMCEEditor() 的函数,我在调用 ajax 之后在我的 getSecFacility() 函数中调用它。在这个函数中,我试图为这些新添加的文本区域重新初始化 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。这是我在 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 调用中添加了任何元素?
-
@ilter
facility_section_information.php将 html 元素输出到div中,我使用id="selected_fac_section"。 -
您的自动插入文本区域到底在哪里?
-
文本区域在我拥有的表单中,该表单位于
facility_section_information.php。 -
我的意思是,你如何访问它?它有某种选择器吗?身份证,班级,什么?如果您使用带有 textarea 选择器的 tinymce 初始化新创建的 textarea,您也将重新初始化页面上所有现有的 tinymce 编辑器。那不是你想要的。这就是为什么您应该为新创建的 textarea 使用不同的选择器,以便这次只选择它。我希望这是有道理的。你应该在成功回调中初始化它。我希望你能从我的回答中得到原因。试试然后回来。然后我们将看看下一步该做什么;)
标签: javascript jquery html ajax tinymce