【发布时间】: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