0

我用 django 创建了很多 tinymce:

<script type="text/javascript" src="{{ STATIC_PREFIX }}js/tiny_mce/tiny_mce.js"
</script>
<script type="text/javascript" src="{{ STATIC_PREFIX }}js/tiny_mce/tiny_init.js"
</script>

<script type="text/javascript">
tinyMCE.settings = configArray[1];
tinyMCE.execCommand('mceAddControl', true, "tobs");
</script>
        {% for obs in obss %}
        <div id="obs">
          DateTime:<samp>{{ obs.date }}</samp><br>
          Description: <br>
           <textarea id="tobs" class="ro">{{ obs.description }}</textarea><br>
           {% for f in obs.content %}
              File:
              <a href=Observations/{{f}} title="download file">
               <script>
                 get_name("{{f}}")
               </script>
              </a><br>
           {% endfor %}
           Author:<samp>{{ obs.user }}</samp><br>
           Type:<samp>{{ obs.category }}</samp><br><br>
        </div>
        {% empty %}
            <br>Sorry, no observations in DataBase.
        {% endfor %}

但问题是只有第一个 textarea 从 configArray[1] 获取我的设置,看起来像 tinymce,第二个和第三个只是没有 tinymce 设置的简单 textarea。

我怎样才能改变whis?

4

1 回答 1

1

更改每个文本区域的 id。id 在 HTML 中应该是唯一的,但是您的 for 循环正在创建多个具有相同 id 的文本区域。TinyMCE 正在尝试使用 id="tobs" 呈现文本区域,并且在找到多个时会感到困惑。你可以试试:

{% for obs in obss %}
    ...
    {% with "tobs"|add:forloop.counter as area_id %}
        <textarea id={{ area_id }} class="ro">{{ obs.description }}</textarea<br>
    {% endwith %}
    ...
{% endfor %}

这应该使您的文本区域具有 ids: tobs1, tobs2, tobs3,...,这应该可以解决问题。

在这里阅读更多:https ://docs.djangoproject.com/en/dev/ref/templates/builtins/#for

在这里:TinyMCE 在加载两个文本区域时不起作用

但是应该有一个更优雅的解决方案来解决这个问题。到目前为止,我已经能够找到这个示例,它使用类来区分 textareas 并且根本不使用 id,这与最后一个链接的解决方案相矛盾:http ://www.tinymce.com/tryit/3_x /multiple_configs.php

于 2014-04-01T21:37:48.947 回答