2012-03-17 77 views
1

在动态生成的页面上,我有X TinyMCE-textarea,使用jquery和css这些“窗体”隐藏或显示,基于“select”。首先,TinyMCE显示没有问题,但在选择了一些内容(另一种语言,选择选项)后,jquery隐藏了所有这些内容,并且当显示选定的div时,TinyMCE会在没有按钮的情况下初始化。我试图在.hide()之前关闭TinyMCE,而不是在.show()之后打开,但有些地方是错误的。对不起,我的英语,谢谢你的帮助。
HTMLjQuery/TinyMCE动画显示和删除多个文本区

<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")); 
} 

UPDATE:
我的解决方案:

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({ 
     ..... 
    }); 
}; 
+0

为什么你需要删除控件?将使用隐藏方法,而不是?一个问题是无论在下拉列表中选择了什么选项,removeTinyMCE()中的tinyMCE.execCommand()调用的第三个参数都是相同的。尝试为每个textarea添加一个id属性,然后在removeTinyMCE()和addTinyMCE()中使用这些id值作为参数值。 – 2012-03-17 13:12:50

+0

我必须在动画之前禁用tinymce,而不是启用(因为tinymce会在.show()之后搞砸),我只是不知道如何。我发现这个removecontrol命令,但不知道它是如何工作的。 – appl3r 2012-03-17 13:20:20

回答

0

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

而不是$("#container textarea")在你的函数removeTinyMCE和addTinyMCE。