CKEditor с MVC: обработка событий - PullRequest
0 голосов
/ 19 марта 2012

У меня есть следующий код, который генерирует мой CKEditor по умолчанию в моей форме:

$('#Content').ckeditor({
    filebrowserUploadUrl: '/ControlPanel/Reviews/UploadReviewImage/'
});

Как видите, моя реализация довольно проста - большинство настроек контролируются в config.js и являются глобальными для моего сайта, за исключением обработчиков загрузчика.

Искал несколько дней, но не могу найти ничего лаконичного. Мне нужно уметь определять, когда щелкают CKEditor, и увеличивать окно (хотя и не во весь экран). Я также хочу отображать текст справки при нажатии на CKEditor ... но я не могу понять, как обрабатывать события dom или применять к нему события JQuery? Я пробовал несколько разных вещей, моя последняя попытка была следующей:

$("#Content").ckeditorGet().click(window.showDescription);

Но я получаю ошибку типа:

Uncaught TypeError: Object #<Object> has no method 'click'

Это понятно, поскольку CKEditor имеет свою собственную систему событий.

Документация CKEditor кажется очень неинтуитивной - и примеры не очень помогают.


UPDATE

Мне удалось заставить это работать самостоятельно, хотя из-за того, как я написал свое окно. Функция ShowDescription, мне нужно было передать в нее событие JQuery. Вот код для всех, кто заинтересован:)

$("#Content").ckeditorGet().on("instanceReady", function () {
        this.on("focus", function () {
            this.resize(638);
            // Mimic JQuery event for textarea
            var originalEditor = $(this.container.$).parents(".input").find("textarea");
            originalEditor.trigger(jQuery.Event("focus"));
        });
        this.on("blur", function () {
            this.resize(400);
        });
    });

1 Ответ

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

Как вы уже подозревали, то, что вы сделали выше, не сработает. Метод ckeditorGet возвращает экземпляр редактора, а не элемент DOM редактора.

Вы можете использовать событие фокуса ckeditor, чтобы определить, что делать, когда редактор получает фокус.

Пример:

$("#Content").ckeditorGet().on('focus', function(e) {
    // do what you want on focus
});

Могу ли я предложить включить плагин autogrow для изменения размера области содержимого? Он более обобщен для размера вашего контента и может работать лучше, чем попытки изменить размер самостоятельно.

...