Jquery TinyMCE-添加开/关拨动开关
我在Magento管理部分的文本区域使用TinyMCE。我的TinyMCE编辑器从一开始就是可见的,但我想要禁用/重新启用它的选项 我使用的是jQuery插件版本,所以我添加了一些脚本,几乎可以正常工作了。但是,它只影响TinyMCE的第一个实例——如果页面上有任何其他实例,则不会受到影响 我用这个例子作为我到目前为止所做工作的基础。但仍然无法理解为什么它只影响第一个实例。有什么想法吗?这是我的密码:Jquery TinyMCE-添加开/关拨动开关,jquery,magento,tinymce,Jquery,Magento,Tinymce,我在Magento管理部分的文本区域使用TinyMCE。我的TinyMCE编辑器从一开始就是可见的,但我想要禁用/重新启用它的选项 我使用的是jQuery插件版本,所以我添加了一些脚本,几乎可以正常工作了。但是,它只影响TinyMCE的第一个实例——如果页面上有任何其他实例,则不会受到影响 我用这个例子作为我到目前为止所做工作的基础。但仍然无法理解为什么它只影响第一个实例。有什么想法吗?这是我的密码: var $j = jQuery.noConflict(); // Add ON OFF tog
var $j = jQuery.noConflict();
// Add ON OFF toggle switch
$j(function() {
$j('textarea').after("<br/><span class=\"toggle form-button\">Toggle TinyMCE</span>");
$j("span.toggle").toggle(function(){
$j('.wrapper').find('textarea').tinymce().hide();
}, function () {
$j('.wrapper').find('textarea').tinymce().show();
});
});
var$j=jQuery.noConflict();
//附加开关切换开关
$j(函数(){
$j('textarea')。后面(“
Toggle TinyMCE”);
$j(“span.toggle”).toggle(函数(){
$j('.wrapper').find('textarea').tinymce().hide();
},函数(){
$j('.wrapper').find('textarea').tinymce().show();
});
});
如果我为每个单独的文本区域重复脚本,比如textarea:eq(0)、textarea:eq(1)等,效果还可以。我不知道为什么,但可以
更新:
他们在tinymce站点上使用jQuery显示/隐藏示例的方式实际上不起作用。除了隐藏编辑器之外,您实际上还需要卸载并重新加载它,否则在提交表单时,在“切换关闭”状态下所做的任何更改都不会被保存。因此,您应该执行以下操作:
$(function() {
var id = 'tinytextareaID'; // ID of your textarea (no # symbol)
$("a.toggle").toggle(function(){
tinyMCE.execCommand('mceRemoveControl', false, id);
}, function () {
tinyMCE.execCommand('mceAddControl', false, id);
});
});
如果它可以帮助任何人,我可以说,当我在同一页面上有多个tinymce实例时,我从来没有让它与jquery助手一起正常工作过。事实上,我不确定使用jquery是否有意义,因为您将失去使用tinymce支持的“init once”方法的机会。所以我只编写了几个函数来处理切换:
function showBlogEditor(strItemId){
var theeditor = tinyMCE.get(strItemId); //strItemId is the ID of the HTML element
if(theeditor && theteditor.initialized){
//you can do something here if you need
}else{
tinyMCE.execCommand('mceAddControl', false, strItemId);
}
}
function hideBlogEditor(strItemId){
if (tinyMCE.getInstanceById(strItemId))
{
tinyMCE.execCommand('mceFocus', false, strItemId);
tinyMCE.execCommand('mceRemoveControl', false, strItemId);
}
}
另外,我刚刚停止使用jquery帮助程序进行初始化,如下所示:
/* it is the mode: "none" that matters here. You are initializing the tinymce object without creating a visual manifestation of it. Then the show and hide functions will turn the control on and off */
tinyMCE.init({
theme : "advanced",mode : "exact",
mode : "none",
plugins : strplgns,
theme_advanced_buttons1 : strbtns1,
theme_advanced_buttons2 : strbtns2,
theme_advanced_buttons3 : strbtns3,
content_css : "/css/hlsl.css"
});
实际上,在我浪费了很多时间试图让它与jquery一起工作之后,我只是直接使用tinymce对象。由于init只调用了一次,所以所有的编辑器看起来和工作起来都是一样的 对于寻找TinyMCE 4.x版的任何人,您可以使用:
tinymce.EditorManager.execCommand('mceToggleEditor', true, textarea_id);
在我的页面上,我在普通HTML“textarea”和tinymce编辑器之间切换。我用tinymce 4。上面的接收器在版本4中不再工作。为了避免在提交时丢失textarea内容,我找到了以下解决方案:
功能切换_tinymce_checkbutton(checkButtonId,strItemId){
var toggle=$('#'+checkButtonId);//checkButtonId=checkbuttonw/o的id#
if(toggle.attr('value')='on'){
var editor=tinymce.EditorManager.get(strItemId);//strItemId=w/o文本区域的id#
editor.remove();
toggle.attr('value','off');
}否则{
var editor=tinymce.EditorManager.createEditor(strItemId,tinymce\u设置);
render();
toggle.attr('value','on');}
}
这有点不相关,但为什么要执行$j('.wrapper')。查找('textarea')?您可以只执行$j('.wrapper textarea')。请记住jQuery选择器语法的工作原理与CSS类似。对不起,我本来就有这样的语法,只是在尝试了一些不同的东西之后忘记了将其更改回去,以查看它们是否有任何一个起作用+1.如果复制示例并将其关闭,则在提交表单时,原始文本区域将被忽略,其内容将替换为隐藏时编辑器中的内容。谢谢!我到处找这个!!!TinyMCE v3到处都有示例,但v4没有。我们如何进一步添加此逻辑:如果编辑器当前处于打开状态,请将其关闭,否则将其打开
?由于此命令切换TinyMCE的可见性,因此知道编辑器当前是否处于启用状态非常有用。这可以通过使用if(tinymce.EditorManager.get(textarea_id).hidden==false){/*执行某些操作*/}
来检查。要删除编辑器实例,请//删除绑定到divs tinymce.remove('div');//删除绑定到textareas tinymce的所有编辑器。删除('textarea');//删除所有编辑器tinymce.Remove();//按id tinymce删除特定实例。删除(“#id”);