将tinyMCE设置应用于动态创建的textarea

时间:2014-01-16 23:00:53

标签: javascript python django tinymce django-tinymce

我用django创造了很多东西:

<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,第二个和第三个只是简单的textarea没有tinymce设置。

我怎样才能改变耳语?

1 个答案:

答案 0 :(得分:1)

更改每个textarea的ID。 id应该在HTML中是唯一的,但是你的for循环创建了具有相同id的多个textareas。 TinyMCE试图用id =“tobs”渲染textarea,并在找到多个时感到困惑。你可以尝试:

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

这应该使你的textareas与id:tobs1,tobs2,tobs3,...,这应该解决问题。

在此处阅读更多内容:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for

在这里:TinyMCE not working when loading two textareas

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