【问题标题】:jQuery/TinyMCE displaying and removing multiple textareas with animationjQuery/TinyMCE 使用动画显示和删除多个文本区域
【发布时间】:2012-03-17 13:06:04
【问题描述】:

在动态生成的页面上,我有 X TinyMCE-textarea,使用 jquery 和 css,这些“表单”被隐藏或显示,基于“选择”。起初,TinyMCE 显示没有问题,但在我选择了一些东西(另一种语言,选择选项)后,jquery 将它们全部隐藏,当显示选定的 div 时,TinyMCE 被初始化,没有按钮。我试图在 .hide() 之前关闭 TinyMCE,而不是在 .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({
        .....
    });
};

【问题讨论】:

  • 为什么需要去掉控件?使用 hide 方法会起作用吗?一个问题是,在 removeTinyMCE() 中调用 tinyMCE.execCommand() 的第三个参数是相同的,无论在下拉列表中选择什么选项。尝试为每个文本区域添加一个 id 属性,然后在 removeTinyMCE() 和 addTinyMCE() 中使用这些 id 值作为参数值。
  • 我必须在动画之前禁用tinymce,而不是启用(因为在.show() 之后tinymce 会搞砸),我只是不知道怎么做。我找到了这个 removecontrol 命令,但不知道它是如何工作的。

标签: jquery tinymce textarea hidden


【解决方案1】:

您的问题的解决方案可能是使用$("#container textarea").attr('id')

在你的函数 removeTinyMCE 和 addTinyMCE 中代替 $("#container textarea")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多