Использование общего кода с CKEditor и jQuery Validation - PullRequest
2 голосов
/ 07 декабря 2010

Я использую CKEditor и плагин jQuery Validation для проекта, над которым я работаю.

За последние несколько дней я прочитал несколько очень полезных постов на StackOverflow.com, которые действительно помогли мне проверить CKEditor, спасибо!

Теперь я хочу развернуть написанный мной код для обработки одного экземпляра редактора для остальной части проекта, в идеале без дублирования кода или указания каждого отдельного экземпляра по идентификатору. Их много на многих страницах благодаря спецификации моих клиентов.

Код в нижнем колонтитуле моих страниц:

$(document).ready(function() {
 CKEDITOR.instances["itissue"].on("instanceReady", function() {
  // Set keyup event
  this.document.on("keyup", updateValue);

  // Set paste event
  this.document.on("paste", updateValue);
 });

 function updateValue() {
    CKEDITOR.instances.itissue.updateElement(); 
    $("#itissue").trigger('keyup');                   
 } 
});

itissue - это идентификатор моего экземпляра, идентификатор отличается на каждой странице. Я вижу, что его нужно заменить каким-то общим родовым идентификатором для "всех текстовых областей", но на этом мои навыки программирования и поиска в Google истекли.

Буду признателен за толчок в правильном направлении, если у кого-нибудь возникнут какие-либо идеи.

Ответы [ 2 ]

4 голосов
/ 07 декабря 2010

Ниже приведен код, который я использовал для решения этой проблемы, надеюсь, он пригодится кому-нибудь в будущем.

<script type="text/javascript">
$(document).ready(function() {
    for(var name in CKEDITOR.instances) {
        CKEDITOR.instances[name].on("instanceReady", function() {
            // Set keyup event          
            this.document.on("keyup", updateValue);
            // Set paste event
            this.document.on("paste", updateValue);     
        }); 

        function updateValue() {
            CKEDITOR.instances[name].updateElement(); 
            $('textarea').trigger('keyup');
        }
   }    
});
</script>
2 голосов
/ 07 декабря 2010

Я бы проверял редакторы в обработчике отправки, вместо того, чтобы наблюдать за keyup и вызывать updateElement onkeyup.

Чтобы ответить на ваш вопрос, вам нужно пройти через объект CKEDITOR.instances .

// validator submit handler
var submitHandle = function(){
    for(var name in CKEDITOR.instances){
        CKEDITOR.instances[name].updateElement(); // update all instances of ckEditors
    }
    // proceed with validation check
};

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...