CKEditor - 触发对话框确定按钮

时间:2013-01-20 12:17:56

标签: ckeditor

我正在使用CKEditor,我编写了一个弹出CKEditor对话框的插件。

我需要重新设计ok按钮并向页脚添加更多元素,如文本框和复选框,但这样做似乎很复杂,所以我隐藏了页脚部分并在对话框内容中创建了一个uiElement所有我需要的东西,但现在我想要的是在隐藏的页脚中触发okButton,但我找不到办法做到这一点..

有人吗?!

2 个答案:

答案 0 :(得分:4)

可能有更好的方法,但这就是我的方式:

var ckDialog = window.CKEDITOR.dialog.getCurrent(),
    ckCancel = ckDialog._.buttons['cancel'],
    ckOk = ckDialog._.buttons['ok'];

ckOK.click();

诀窍是获取按钮然后使用CKEditor Button API来模拟点击。出于某种原因,我无法调用dialog.getButton('ok')因为getButton由于某种原因未定义。我的方法深入研究私有数据,我怀疑这是最好的方法。

从onShow事件(定义对话框时),我能够得到文档指示的ok按钮:

onShow: function () {
    var okBtn = this.getButton('ok');
    ...
}

这是Button API:http://docs.ckeditor.com/#!/api/CKEDITOR.ui.dialog.button,你也可以在那里访问对话框API(我假设你已经去过那里了!)

答案 1 :(得分:3)

您可以尝试在plugin.js中添加此行。

var dialog = this.getDialog();
document.getElementById(dialog.getButton('ok').domId).click();

在我的自定义插件中,我只是隐藏“确定”按钮而不是整个页脚。 下面是我的plugin.js语句的一部分。

{
    type : 'fileButton',
    id : 'uploadButton',
    label : 'Upload file',
    'for' : [ 'tab1', 'upload' ],
    filebrowser :
    {
        action : 'QuickUpload',
        onSelect : function(fileUrl, data){
            var dialog = this.getDialog();
            dialog.getContentElement('tab1','urlTxt').setValue(fileUrl);
            document.getElementById(dialog.getButton('ok').domId).click();
        }
    }
}

顺便说一句,我正在使用 CKEditor 4.0(修订版769d96134b)