根据Selection - CKEditor更新RichCombo的标签

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据Selection - CKEditor更新RichCombo的标签相关的知识,希望对你有一定的参考价值。

我有一个自定义RichCombo允许字体选择。它会浏览一些数据并创建其选项,而“特殊功能”包含带有相应字体系列集的跨度,而不仅仅是纯文本。

Font Selector

现在我想要更改/更新此RichCombo框的valuelabel,每次更改以及来自外部。基本上,它应该像默认的字体选择框一样。

editor.ui.addRichCombo( 'FontFamily', {
    multiSelect : false,
    label: 'Schriftart',
    title: 'Schriftart',
    className:   'cke_format',
    panel: { css:[CKEDITOR.skin.getPath("editor")].concat(editor.config.contentsCss) },
    toolbar: 'font',
    init: function() {
        for (var i=0; i < allFonts.length; i++) {
            this.add(
                allFonts[i].class,
                '<span class="'+ allFonts[i].class +'">' + allFonts[i].label + '</span>',
                 allFonts[i].label
             );
        };
    },
    onClick: function(value) {
         updateFontCorrectly();
    }
}

请注意,实际上有更多的代码来代替updateFontCorrectly()函数。

我希望能够做类似的事情

this.setValue("Times New Roman");

(而是通过变量传递),从onClick函数内部以及从外部全局传递。

从理论上讲,上面的代码可以工作,但在一次使用后完全打破了盒子。使用一次后,某些类jQuery目标(深入CKEditor源代码)似乎失败了,RichCombo拒绝打开。

我把它剥离了

this._.value = "Times New Roman";

但是一次使用后它也会中断。

我必须在这里完全遗漏一些东西。我怎样才能使这个工作?

答案

事实证明,它非常简单。

this.setValue(foo, "Text");

唯一棘手的部分是foo必须是一个有效值,因为它存在于this._.items中。

如果它无效,richCombo将会中断。 “文字”可以是你想要的任何东西。

以上是关于根据Selection - CKEditor更新RichCombo的标签的主要内容,如果未能解决你的问题,请参考以下文章

文本选择上的CKEDITOR内联编辑器工具栏[关闭]

CKEditor 更新 texarea 值的问题

Ckeditor通过Ajax更新数据

ckeditor 更新文本区域

Django Ckeditor 的 Youtube 插件已更新

Ckeditor更新textarea