2012-03-19 3 views
0

Я следующий код, который генерирует мой по умолчанию CKEditor на моей форме:CKEditor с MVC: Обработка событий

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

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

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

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

Но я получаю TypeError:

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

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

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


UPDATE

мне удалось получить эту работу самостоятельно, хотя из-за THW, как я написал свою функцию window.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

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

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

Пример:

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

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

+0

Спасибо - я проработал вчера вечером (и реализовал его несколько иначе из-за моих потребностей), я как раз собираюсь обновить вопрос с ответом :) – Spikeh

+0

О, и спасибо за предложение autoGrow - на самом деле улучшает опыт (я только хотел увеличить ширину при фокусировке, поэтому плагин автошопа идеально подходит). – Spikeh

+0

Нет проблем. Рад, что это сработало. –

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