ckeditor + jquery + fancybox - PullRequest
       13

ckeditor + jquery + fancybox

0 голосов
/ 20 июля 2011

Цель состоит в том, чтобы на моей странице администратора была маленькая иконка. Нажатие на эту иконку вызовет модальное окно с экземпляром текстового поля ckeditor. Пользователь редактирует текст, сохраняет его и модально закрывает. Моя проблема в том, что если я снова нажму на иконку, новый экземпляр редактора будет пустым. Ниже вы можете увидеть соответствующие коды

HTML часть:

<a id="editShortText" title="Short Description" href="#saveShortTextFrm"><img src="clickme.gif">

<div style="display:none">
<form action="" method="post" id="saveShortTextFrm" name="saveShortTextFrm" class="frm">
<textarea class="jquery_texteditor" name="short_text_english" id="short_text_english" style="width:700px; height:400px;"><? echo $value_from_db;?></textarea>
<div align="center" style="margin:20px;"><input name="submit1" type="submit" value="Save" /></div>
</form>
</div>

JS Скрипт:

$("#editShortText").fancybox({
        'scrolling': 'no',
        'titleShow': false,
        'onStart': function() {
            $('.jquery_texteditor').ckeditor(config);   
        },
        'onComplete': function() {
            $('.jquery_texteditor').ckeditor(config);   
        },
        'onClosed': function() {
           $('.jquery_texteditor').ckeditor(config);    
        }
    });

    $("#saveShortTextFrm").live("submit", function() {

        $.fancybox.showActivity();

        $.ajax({
            type    : "POST",
            cache   : false,
            url     : "_save_text.php",
            data    : $(this).serializeArray(),
            success: function(data) {
                if (data!='')
                {
                    $("#shortTtextImageHolder").html('<img src="images/button_accept.gif" border="0">');


                    if(CKEDITOR.instances["jquery_texteditor"]) 
                    {
                        delete CKEDITOR.instances["jquery_texteditor"];
                        $('.jquery_texteditor').ckeditor(config);   
                        $("#short_text_english").val(data);

                        CKEDITOR.instances.short_text_english.setData(data);
                    }


                }
                else
                {
                    $("#shortTtextImageHolder").html('<span class="error">S.O.S.</span>');
                }

                $.fancybox.close();
            }
        });

        return false;
    });

Все работает хорошо при первом нажатии - когда я нажимаю на ссылку / изображение в первый раз. Если я нажимаю снова (после сохранения модальных данных или просто закрытия модального окна), новый модальный режим запускается, но в текстовой области нет данных.

Есть идеи, как это исправить?

1 Ответ

1 голос
/ 20 июля 2011

Когда вы закрываете модал, попробуйте использовать

CKEDITOR.instances.short_text_english.destroy(true);

или

if (CKEDITOR.instances.short_text_english) {
     CKEDITOR.instances.short_text_english.setData("");
     CKEDITOR.instances.short_text_english.destroy(true);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...