jQuery ajaxForm и CKEditor не сохраняются как следует - PullRequest
1 голос
/ 07 марта 2012

Здравствуйте, я сожалею, что это часть очень большой системы, и я не собираюсь все это помещать, если мне чего-то не хватает, пожалуйста, спросите меня об этом,

Я использую jQuerysajaxForm http://jquery.malsup.com/form/ и CKEditor http://ckeditor.com

Согласно документации по CKeditor, адаптер jQuery работает с ajaxForm http://ckeditor.com/blog/CKEditor_for_jQuery в нижней части раздела «Взаимодействие кода с экземплярами редактора»,

теперь все мое содержимое загружается на страницу с помощью AJAX, и запускается функция addonLoader с передаваемыми в нее данными, это раздел этой функции, который обрабатывает CKEditor

    // check there are not any instance's of CKEditor running
    $(".addonContent form textarea.editor").each(function(index, element) {
        $(this).ckeditor(function(){  this.destroy(); });
    });

    // add the content to the output area
    $(".addonContent").html(data);  

    // setup Ajax form values
    AJAXFormOptions = {
        success:       addonLoader
    };

    // activate ajaxForm on any forms from the data shown
    $(".addonContent form").ajaxForm(AJAXFormOptions);
// enable the content editor
$(".addonContent form textarea.editor").ckeditor({width:"800px"});

Когдамоя форма отправлена ​​ссылкой на изображение для запуска этого кода

function submitForm(formID){
    (function($){
        $(".addonContent form textarea.editor").each(function(index, element) {
            $(this).ckeditor(function(e){
                this.updateElement();
            });
        });
        $(formID).submit(function(){    
            // prevent the browser redirect 
            return false;
        });
        $(formID).submit();
    })(jQuery)
}

Я проверил, что formID правильный, но по какой-то причине он по-прежнему не обновляет текстовое поле с содержимым, помещенным в CKEditorкто-нибудь имел эту проблему и знает, как ее исправить?

1 Ответ

1 голос
/ 07 марта 2012

this, который вы используете для вызова updateElement(), является узлом DOM, а не объектом ckeditor.

На предоставленной вами ссылке на адаптер показано, как получить доступ к экземпляру редактора из документов:

 var editor = $('.jquery_ckeditor').ckeditorGet();

Попробуйте изменить this.updateElement() на:

 $(this).ckeditorGet().updateElement()

Теперь вы должны вызывать обновление для экземпляра редактора

...