CKEditor插件:获取下拉项

时间:2017-08-16 16:50:50

标签: javascript ckeditor

我为CKEditor创建了一个插件,打开一个带有下拉列表的对话框。在该下拉列表中是用户在CKEditor之外上传的文件列表。计划是在包含该文件名的文本中插入“标签”,如[[myfile.pdf]],然后当我显示实际页面时,我将插入该文件的链接。

问题是由CKEditor创建的下拉框是列出文件名(正确)但是当我选择它时,它会将文件的SIZE插入文本而不是文件名。当插件运行时,它会执行ajax调用并获取用户文件的目录列表,这是该编号的来源;我认为它与文件ID混淆。

这是插件的内容。我为了简洁而省略了ajax电话。它填充变量“items。”

编辑:我修改了从ajax调用返回的结果,只返回文件名,然后使用两个不同的列名(名称和文件名)返回文件名(两次),在这两种情况下,插入的值都是NULL。它只是不想插入文本值。

我也尝试在tab-basic和linkType之间的内容和元素(交替)下更改id的值,我在JS控制台中遇到一个错误,无法读取未定义的属性getValue。诅咒再次被挫败!

另一个编辑:我尝试将文件的名称放在数据库表中,然后将其返回到插件而不是目录列表。如果我选择filename,attachmentid(按此顺序),OPTION框列出attachmentid,并插入文件名。如果我选择attatchmentid,文件名就会完全相反。那么我想,如果我选择了两次文件名怎么办?所以我选择了filename,filename作为filename2。它的工作原理!这仍然不是一个理想的解决方案,所以我希望有人知道这样做的正确方法。

CKEDITOR.dialog.add('attachfileDialog',function(editor){
return {
    title:'Attach File',
    minWidth:400,
    minHeight:200,
    contents:[{
        id:'tab-basic',
        label:'Choose File',
        elements:[{
            type:'select',
            id:'linkType',
            label:'Choose File',
            items:items,
            'default':''
        }]
    }],
    onOk:function(data){

        var dialog = this;
        var componentType = dialog.getValueOf('tab-basic','linkType');
        var selectedText = editor.getSelection().getSelectedText();

        if(componentType != ''){

            editor.insertText('[[' + componentType + ']]');

        }
    }
};
});

我实际上是从另一个插件复制了它并修改它以适应,所以我承认我不太清楚我在这里做什么。我已经通过CKEditor文档进行了挖掘,但它们并没有特别有用。

变量componentType将返回文件大小。我只是不确定如何让它抓取文本而不是值;如果您查看源,则具有文件大小的值,文本是文件名。

有什么想法吗?谢谢!

0 个答案:

没有答案