【问题标题】:Reloading tinymce.init function on ajax call在 ajax 调用上重新加载 tinymce.init 函数
【发布时间】:2014-01-03 09:29:16
【问题描述】:

我在rails 2 上,使用tinymce 4 编辑器编辑textarea 字段。

new.html

<script type="text/javascript" src="/tinymce/tinymce.min.js"></script>
<%= render "form" %>
<% form_for ... %>
 <%= c.text_area :description %>
 <%= submit_tag %>
<% end %>

我需要刷新下面的脚本

_form.html

<div id ="refresh_editor">
<script type="text/javascript">
  tinymce.init({
    selector: "textarea"
...
..
});
</div>

.rjs 文件

page.replace_html 'refresh_editor', :partial => 'form'

我的问题,
1) 如何刷新脚本?
2)我是否也需要刷新文本区域类型?这将使编辑器中的内容为空。

我为什么要这样做? fiddle 会给出一个想法,当用户第二次检查纸张边距下拉列表时,我会丢失值。

【问题讨论】:

  • 将脚本放入函数中,并在需要时调用它
  • @NitinJ 是的,但是如何在 ajax 调用中加载脚本?我知道我可以更改表单或文本,但脚本将被加载到页面一次,我的想法是对的吗?那么如何调用js函数呢?
  • 您想在页面加载和 AJAX 请求时运行该脚本吗?或者只是在 ajax 请求中
  • 我找到了一种在页面加载时运行它的方法,但是如何在 ajax 调用中运行它?
  • $.ajax({ url: "/users/check_login", success: function(data){ //这里为那个脚本调用你的函数}})

标签: javascript ruby-on-rails tinymce ruby-on-rails-2 tinymce-4


【解决方案1】:

嗯...如果我理解正确,请告诉我: 您需要重新初始化 tinymce 脚本吗?

如果您需要这样做,如果有重新初始化或重置脚本的方法,您可以在 tinymce 文档中找到。

但是我在 tinymce 对象中找到了方法 tinymce.remove(),您可以使用它来删除并重新初始化脚本(我尝试将其用于重新初始化,但它很烂:D)。

因此,只需创建一个函数(或在我的示例中为 tinymce 的 e 方法)重新调用 tinymce.init() 宽度您的设置。

如果您只需要空白我在我的示例中创建的一个名为 clean 的 tinymce 方法,它会删除所有内容并将其替换为 &lt;p&gt;&lt;/p&gt;

参见示例: http://jsfiddle.net/4ndS7/3/

注意:我创建了 2 个&lt;a&gt; 标签来触发函数:clean()reset()

这可能不是最好的方法...但是...只是认为我可以解决您的问题。

【讨论】:

  • noooo.. 初始输入后在 tinymce 窗口管理器中保留值,明白了吗?
  • tinymce.init(..) 将根据 ajax 请求重新加载.. 可能吗?
  • 是的,您可以在 ajax 请求的 done 回调函数中插入 tinymce.init(..)。但很抱歉,我不明白您的意思noooo.. 在初始输入后保留在 tinymce 窗口管理器中的值,明白了吗?您不想保留默认设置?
  • 我不担心设置。我将解释这个问题,在文本框中输入一个值作为边距顶部之后(正如你在小提琴中看到的那样),当你提交时,我在我的应用程序中使用了远程功能。然后值从编辑器中消失对吗?所以我使用 ajax 来更新表单,但我需要重新加载脚本我该怎么做?所以值会在编辑器中更新..任何疑问我都可以去城里解释..
猜你喜欢
  • 2013-09-11
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
相关资源
最近更新 更多