JQuery / TinyMCE отображает и удаляет несколько текстовых областей с анимацией - PullRequest
1 голос
/ 17 марта 2012

На динамически генерируемой странице у меня есть X TinyMCE-textarea, с jquery и css эти «формы» скрываются или отображаются, основываясь на «select». Сначала TinyMCE отображается без проблем, но после того, как я что-то выбрал (другой язык, select-option), и jquery скрывает их все, а когда отображается выбранный div, TinyMCE инициализируется без кнопок. Я пытался отключить TinyMCE до .hide (), чем включить после .show (), но что-то не так. Извините за мой английский, и спасибо за помощь.
HTML

<select id="langs">
      <option name="0">Magyar</option>
      <option name="1">Angol</option>   
</select>
<form id="addarticleform" method="post" action="" >
    <input type="submit" value="Mentés" name="addarticlesubmit"/>
    <div id="form_0">
        <p>Cikk címe: <input type="text" name="articletitle_0" value="" /></p>
        Cikk tartalma:
        <textarea name="articletext_0"></textarea>
    </div>
    <div id="form_1">
        <p>Cikk címe: <input type="text" name="articletitle_1" value="" /></p>
        Cikk tartalma:
        <textarea name="articletext_1"></textarea>
    </div>
</form>

JQuery:

$(document).ready(function(){        
    $('#langs').change(function() {
        //Remove tinymce
        removeTinyMCE();
        $('#addarticleform div').hide('slow');
        var e = '#form_' + $(':selected', $(this)).attr('name');
        $(e).show('slow');
        //add tinymce
        addTinyMCE();
    });
});
function removeTinyMCE () {
    alert("removing");
    tinyMCE.execCommand('mceRemoveControl', false, $("#container textarea"));
    //tinyMCE.execCommand('mceRemoveControl', false, $("#container textarea").attr(id));
}
function addTinyMCE() {
    alert("adding");
    tinyMCE.execCommand('mceAddControl', false, $("#container textarea"));
}

ОБНОВЛЕНИЕ:
Мое решение:

initTinyMCE("textarea");
$(document).ready(function(){        
    $('#langs').change(function() {
        var tid = '#textarea_' + $(':selected', $(this)).attr('name');
        $(tid).tinymce().remove();
        $('#addarticleform div').hide('slow');
        var e = '#forms_' + $(':selected', $(this)).attr('name');
        $(e).show('slow');
        initTinyMCE(tid);
    });
});
function initTinyMCE(selector) {
    $(selector).tinymce({
        .....
    });
};

1 Ответ

0 голосов
/ 19 марта 2012

Решением вашей проблемы может быть использование $("#container textarea").attr('id')

вместо $("#container textarea") в ваших функциях удалите TinyMCE и добавьте TinyMCE.

...