Django-CKEditor Widget не загружается динамически

У меня возникли проблемы при загрузке второго и следующего виджета ckeditor в форме интерфейса в HTML. Это хорошо работает в админке. Когда я нажимаю добавить дополнительные формы динамически, виджет не появляется, а показывает текстовую область, он просто работает на первой (инициализированной) форме. Я уже следую документации по шагам для основных требований. Я использую Django с пакетом django-ckeditor. На странице нет ошибок JavaScript.

Извините, что раньше не показывал никаких кодов. Это часть JavaScript, которая динамически добавляет другой набор форм после нажатия кнопки:

<script src="//cdn.ckeditor.com/4.4.5/standard/ckeditor.js"></script>
<script type="text/javascript" src="ckeditor/ckeditor-init.js"></script>

$('#add_more_work').click(function(){
var form_idx = $('#id_form_set-TOTAL_FORMS').val();
$('#form_set_work').append($('#empty_form_work').html().replace(/__prefix__/g, form_idx));
$('#id_form_set-TOTAL_FORMS').val(parseInt(form_idx) + 1);});

Поле, в котором используется виджет ckeditor, не загружается после того, как он динамически добавляется этой кнопкой, но вместо этого он показывает текстовую область. Я что-то пропустил?

1 ответ

Решение

Вы можете посмотреть на использование formset:added а также formset:removed Сигналы JavaScript доступны начиная с версии 1.9.

Простой метод (в сочетании с django-content-editor и feincms3) может выглядеть так:

(function($) {
  $(document).on('formset:added', function newForm(event, row) {
    row.find('textarea').each(function() {
      CKEDITOR.replace(this.id);
    });
  });
})(django.jQuery);

Я оставлю обработку formset:removed читателю.

Другие вопросы по тегам