Обнаружение событий onChange из CKEditor с использованием Jquery - PullRequest
39 голосов
/ 28 февраля 2011

Я работаю с CKEditor и jQuery, и я хотел бы переключить флаг в true, когда пользователь изменяет значение поля.Одним из этих полей является экземпляр CKEditor.

Все текстовые области, имеющие класс "wysiwyg", преобразуются в CKEditor, но каким-то образом событие $('.wysiwyg').change() никогда не обнаруживается.Я немного погуглил, но комбинация ключевых слов, похоже, не дает ничего, кроме неуместных результатов (мой google-fu отстой).

Спасибо за любую помощь :)

Edit:

for (var i in CKEDITOR.instances) {
        CKEDITOR.instances[i].on('click', function() {alert('test 1 2 3')});
    }

Я попробовал код выше, и он не работает.Это не дает мне ошибку, означающую, что он находит объекты CKEditor, но по какой-то причине слушатель не подключен к нему?

Кроме того, если я заменю вложение события просто на alert(CKEDITOR.instances[i].name);, это будетоповестить имя моей текстовой области, чтобы я знал, что не пытаюсь прикрепить событие click ни к чему:)

Ответы [ 14 ]

0 голосов
/ 08 августа 2016
$(document).ready(function () {        
    CKEDITOR.on('instanceReady', function (evt) {                    
        evt.editor.on('blur', function () {
            compare_ckeditor('txtLongDesc');
        });                    
    });
});

Не знаю о событии 'change', но событие 'blur' отлично работает для меня, когда я использую CKeditor версии 3.6

0 голосов
/ 27 февраля 2015

Я, очевидно, не могу просто добавить комментарий, потому что я новичок на сайте, но ответ Гарри правильный, и я независимо проверил его, поэтому я хотел добавить это.

CKEDITOR.instances [xxx] .on ('изменение', функция () {alert ('значение изменено !!')});

Это работает для CKEditor 4+ и фиксирует все события изменений, включая отмену и повтор, что делает работу Альфонсо js ненужной для новых пользователей.

0 голосов
/ 16 мая 2013

Этот код предупредит пользователя при нажатии любой ссылки на боковой панели

$("#side-menu a").click(function(e){
  if(checkUnsaved()){
    if (confirm("You have unsaved changes.Do you want to save?")) {
      e.preventDefault();          
    }
    // or ur custom alert
  }
});

function checkUnsaved() {
    if(CKEDITOR)
        return CKEDITOR.instances['edit-body'].checkDirty(); // edit-body is the name of textarea in my case.
    else
        return false;
}
0 голосов
/ 07 октября 2011

Для более поздних Googlers, я заметил, что если вы создаете CKEditor, используя этот

$("#mytextarea").ckeditor();

, он работает, но при отправке формы не обновляет значение mytextarea, поэтому отправляет старое значение

но

если вам это нравится

CKEDITOR.replace('mytextarea');

при отправке формы отправляет новое значение

...