根据Selection - CKEditor更新RichCombo的标签

时间:2015-11-20 14:49:21

标签: javascript ckeditor

我有一个自定义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";

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

我必须在这里完全遗漏一些东西。我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

事实证明,这很简单。

this.setValue(foo, "Text");

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

如果它无效,richCombo将会中断。 &#34;文本&#34;可以是你想要的任何东西。