2010-02-16 2 views
8

Я разрабатываю подключаемый модуль для CKEditor, который должен внести некоторые изменения в содержимое редактора непосредственно перед сохранением. В FCKeditor я достиг этого, используя событие , но я еще не смог найти эквивалентный способ сделать это в CKEditor. Я надеялся, что наступит подходящее событие, но, похоже, этого не произойдет. Кто-нибудь знает, как это сделать?Обновление содержимого редактора непосредственно перед сохранением в CKEditor подключаемом модуле

+0

Что 'save' события/функции вы используете? Кнопка «Сохранить»? –

+0

Да. Плагин будет использоваться владельцами сайтов, у которых уже установлен CKEditor, но они по-видимому подходят, поэтому я предпочел бы, чтобы мой подключаемый модуль был как можно более чистым, а это означает, что, если это возможно, не замените стандартную кнопку сохранения. Я посмотрел на источник, и лучше всего добавить обработчик события 'submit' в форму, содержащую редактор, но это вряд ли квалифицируется как чистая. –

ответ

6

Вы можете использовать событие getData, но будьте осторожны, потому что оно уволено также для внутренних целей.

Я подал http://dev.fckeditor.net/ticket/5254 воссоздать предыдущее событие

+0

В сочетании с созданием моего собственного обработчика для отправки события формы? –

+1

Это альтернативное решение. Фактически, это тот, который я бы выбрал на данный момент, потому что это может быть проще справиться с этим правильно, пока CKEditor не создаст правильное событие (я действительно не знаю, что вы хотите сделать, поэтому я предполагаю, что это должно быть чем-то сложным, что должно быть сделано только после обновления текстовой области) – AlfonsoML

+0

Мой плагин позволяет пользователю вставлять фрагменты контента, хранящиеся на другом сервере, в основной контент HTML. Они представлены в содержимом редактора как изображения-заполнители, чтобы предотвратить их редактирование в CKEditor. Непосредственно перед сохранением редактора я хочу заменить эти изображения-заполнители содержимым HTML, которое они представляют, и когда редактор загружается, я хочу преобразовать специальный HTML в заполнители (что я могу делать с существующими событиями). Возможно, есть другой подход, который я должен взять? –

1

В ссылке выше действительно не имеют решения на substitude OnAfterLinkedFieldUpdate случае я прописан короткий пост о том, как идти вокруг него.

Вот форма:

<form id="my_form" action="submit.php" method="post" name="my_form"> 
    <textarea id="my_text" name="my_text"></textarea> 
    <input id="submitForm" type="submit" name="submitForm" value="Submit" /> 
</form> 

JavaScript:

var formSubmitted = false; 
$("#submitForm").live('click', function(event) { 
    if (formSubmitted === true) { 
     formSubmitted = false; 
     return; 
    } 
    event.preventDefault(); 
    //put here function to edit content == OnAfterLinkedFieldUpdate 
    var editor = CKEDITOR.instances.my_text; 
    var html = editor.getData(); 
    html.replace(searchvalue, newvalue); 
    editor.setData(html); 
    formSubmitted = true; 
    $(this).trigger('click'); 
}); 

Код here

Смежные вопросы